2016-01-22 19 views
10

Cześć Próbuję napisać CSV z tekstem HEBREW w nim. Pisze jakiś symbol, a nie tekst hebrajski. Poniżej znajduje się mój CODE PHP.php napisz hebrajski/UTF-8 w csv

<?php 
    $list = array (
       array('שלטל', 'שלטל', 'שלטל', 'שלטל'), 
       array('123', '456', '789'), 
       array('"שלטל"', '"שלטל"') 
      ); 
    $fp = fopen('file.csv', 'w'); 
      //fputs($fp, $bom =(chr(0xEF) . chr(0xBB) . chr(0xBF))); 
      foreach ($list as $fields) { 
       fputcsv($fp, $fields); 
      } 
    fclose($fp); 
?> 

Sprawdziłem w internecie i dodał "fputs ($ fp, $ bom = (CHR (0xEF). Chr (0xBB). Chr (0xBF)))", ale zrobił to wyszło. Czy ktoś może mi pomóc?

Poniżej znajduje się wyjście, które otrzymuję.

enter image description here

Odpowiedz

3

Wystarczy prowadził swój kod. Tekst jest poprawnie zakodowany i wygenerowany plik CSV jest prawidłowy. Otwarcie pliku CSV w edytorze tekstów obsługującym tekst w języku hebrajskim będzie wyświetlane poprawnie. Aby otworzyć plik CSV zawierający hebrajski trzeba postępować zgodnie z instrukcjami, jak sugeruje here

Aktualizacja:

Więc okazuje MS używa UTF-16 i nie tylko to, że używa UTF-16LE (little endian). Aby MS CSV działał poprawnie, potrzebujesz zakodowanego w UTF-16LE tekstu, pliku rozdzielanego tabulatorami.

$list = array (
      array('שלטל', 'שלטל', 'שלטל', 'שלטל'), 
      array('123', '456', '789'), 
      array('"שלטל"', '"שלטל"') 
     ); 

$fp = fopen('file.csv', 'w'); 

//UTF-16LE BOM 
fputs($fp, chr(0xFF) . chr(0xFE)); 

foreach ($list as $fields) { 
    $out = ''; 
    foreach ($fields as $k => $v){ 
     $fields[$k] = mb_convert_encoding($v, 'UTF-16LE', 'UTF-8');   
    } 

    // UTF-16LE tab 
    $out = implode(chr(0x09).chr(0x00), $fields); 

    // UTF-16LE new line 
    fputs($fp, $out.chr(0x0A).chr(0x00)); 
} 
fclose($fp); 

Powyższy kod działa, ale nie jest pewny co do jego wydajności.

+0

Ale gdy używam CodeIgniter „PHPExcel” Wyjście przyjść po hebrajsku bez zmiany jakichkolwiek ustawień. Potrzebuję takich rozwiązań. Wiemy, że nie możemy powiedzieć wszystkim użytkownikom, aby postępowali zgodnie z instrukcjami, aby zobaczyć dane! Czy jest jakiś inny sposób? – TomPHP

+0

@ TomPHP, więc po wielu zabawach, wierzę, że mam rozwiązanie. zaktualizuj odpowiedź. – mani

0

Myślę, że spotkałem się z tym wcześniej, a czasami niektóre wersje programu Excel po prostu nie wyświetlają właściwych znaków/czcionek utf8. ale sam plik ma już utf8.

spróbuj otworzyć plik CSV w Notepad ++ i sprawdzić, czy jest to utf8-bom, a jeśli jej pokazujące znaków UTF8

+0

nope jej nie działa z BOM .. Próbowałem już. Również nie mogę nalegać wszystkich użytkowników na użytkownika Nodepad ++, ponieważ domyślne oprogramowanie będą mieli zainstalowane ms-excell .. Tak więc szukam rozwiązania, aby otworzyć go w msoffice. – TomPHP

+1

Nie trzeba nalegać, aby użytkownik używał npp. Wspomniałem o tym, aby można go było raz użyć. i tak znalazłeś rozwiązanie! Dobra droga! – fedmich