У меня проблемы с переносом японских символов из PHP в JavaScript через json_encode.
Вот исходные данные, прочитанные из CSV-файла.
PRODUCT1,QA,テスト
PRODUCT2,QA,aテスト
PRODUCT3,QA,1テスト
Проблема в том, что при передаче этих данных с помощью echo json_encode ($ return_value), где $ return_value - это двумерный массив, содержащий вышеуказанные данные, японское слово 'テ ス ト' отбрасывается и отображается в виде пустой строки на стороне ответа ajax , Тем не менее, если я поставлю любые алфавитные / цифровые символы в начале японского слова, такие как 'a テ ス ト' или '1 テ ス ト', которые являются 2-й и 3-й строками вышеприведенного примера, эти слова пройдут нормально.
Ниже показано, как выглядят данные на стороне ответа ajax. Как видите, 3-й элемент 1-го блока пуст. Если я удалю «а» или «1» из других слов вышеупомянутых необработанных данных, эти символы также станут пустыми на стороне ответа. Это происходит с любым типом японских символов, которые я тестировал до сих пор.
[["PRODUCT1","QA",""],["PRODUCT2","QA","a\u30c6\u30b9\u30c8"],["PRODUCT3","QA","1\u30c6\u30b9\u30c8"]]
Кто-нибудь знает, почему это происходит и как я могу преодолеть эту проблему?
Вот часть кода с каждой стороны.
PHP:
function getFileContents($dirName,$filename){
$return_value = array();
$my_file= fopen($dirName . $filename, "r");
$row = 0;
while (($data = fgetcsv($my_file, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
#csv file is written in euc-jp so convert to utf-8 here.
$return_value[$row][$c] = mb_convert_encoding($data[$c], "UTF-8", "EUC-JP");
}
$row++;
}
fclose($my_file);
echo json_encode($return_value);
}
JavaScript:
$.ajax({
type: "POST",
url: "data.php",
data: {
"dirName" : "./data/",
"filename" : filename
},
dataType :"json",
success : function(response){
// more code
// At this point, Japanese characters are already empty strings.
}
});
Большое спасибо за вашу помощь заранее!