2017-02-02 12 views
0

Я написал следующий код, чтобы прочитать содержимое из файла Excel, который содержит японские символы и отображения на веб-странице:Как обрабатывать японские символы в HTML, PHP и MySQL

<!DOCTYPE html> 

<?php 
    //header("Content-Type: text/plain; charset=UTF-8"); // output as text file 
    header("Content-Type: text/html; charset=UTF-8"); 
    if(isset($_POST['upload'])){ 

     unset($_POST['upload']); 
     $file_name = basename($_FILES['csv_file']['name']); 
     $name = pathinfo($file_name, PATHINFO_FILENAME); 
     $ext = pathinfo($file_name, PATHINFO_EXTENSION); 

     $csvFile = fopen($_FILES['csv_file']['tmp_name'], 'r'); 
     //skip first line 
     fgetcsv($csvFile); 
     $flag = true; // flag set false when query fails for one or more records 
     while($line = fgetcsv($csvFile)){ 
      if(count($line)>0){ 
       $data = utf8_decode($line[0]); 
       echo "$data <br>";    
      } 
     } 
     if($flag) 
      echo "<h1 style='color:limegreen'> All records imported successfully ! </h1>"; 
     else 
      echo " Error while fetching one or more records"; 

     fclose($csvFile); 
    } 

?> 

<form method="post" action="importExcel.php" enctype="multipart/form-data"> 
    <input type="file" name="csv_file" id="csv_file" accept=".xlsx" > 
    <input type="submit" name="upload" id="upload" > 
</form> 

Это первенствует лист с японскими иероглифами: enter image description here

Мой вопрос:

  • Как мне сделать эти японские символы для правильного отображения на веб-б rowser? Я попытался использовать функцию utf_decode(). Это не помогло.
  • Также, если я хочу хранить эти японские алфавиты в базе данных MySQL, какие изменения мне потребуется сделать?

В настоящее время браузер отображает японские символы как вопросительные знаки и некоторые значения мусора после использования функции utf_decode(). Когда я удаляю его, на экране отображаются значения нежелательной почты.

Edit: Вот выборочные данные из файла Excel:

ア イ リ ッ シ ュ · セ ッ タ ー ア イ リ ッ シ ュ · ウ ォ ー タ ー · ス パ ニ エ ル ア イ リ ッ シ ュ · ウ ル フ ハ ウ ン ド

+3

Возможный дубликат [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way- через) – Qirel

+0

FYI: это японские символы, а не китайцы. Я отредактировал ваше описание. – epo3

+0

@ epo3 Спасибо. Я принял его за китайский, потому что название файла на китайском языке :) – FreeKrishna

ответ

0

Вы не необходимо utf8_decode, добавив, что header("Content-Type: text/html; charset=UTF-8"); будет работать на вас. как->

Примечание:utf8_decodeThis function converts the string data from the UTF-8 encoding to ISO-8859-1. но вы должны utf-8 в вашем случае.

ПРИМЕЧАНИЕ: с использованием fgetcsv может не указывать нужные данные при чтении excel file. конвертировать его в csv или использовать некоторую библиотеку читателей Excel.

header("Content-Type: text/html; charset=UTF-8"); 
$str="七起千去"; 
echo "$data <br>"; 

ПРИМЕЧАНИЕ:, если вы не используете заголовок добавить <meta charset="utf-8"> на страницу это также должно работать.

+0

Я уже добавил заголовок на странице, а также пробовал метатег. Все еще не работает. :( – FreeKrishna

+0

@FreeKrishna работает отлично для меня. Вы можете поделиться данными или опубликовать один или два строки, о которых идет речь. Сначала скопируйте этот код и попробуйте в другом файле, а затем посмотрите. –

+0

Этот код работает в отдельном файле. Моя проблема в том, что я извлекаю японский контент из другого файла, и это, похоже, не работает. – FreeKrishna

0

Do не использовать любые энкодеры/декодеры, которые только ухудшат ситуацию.

ли у CHARACTER SET utf8 (или utf8mb4)

ли иметь заголовок или мета, как уже обсуждалось.

Установить соединение между php и mysql как UTF-8. (Давайте посмотрим, что часть коды, чтобы проверить.)

ли указать UTF-8 в <form method="post" ... accept-charset="UTF-8">

Пожалуйста, покажите нам, что пошло не так. Есть по крайней мере, 5 вариантов «не работает», как можно увидеть здесь: Trouble with utf8 characters; what I see is not what I stored

Если вы можете получить HEX, обратите внимание, что utf8 кодирование для アイリッ является E382A2 E382A4 E383AA E38383. Другие персонажи Катакана также являются E3xxyy.(Kanji и Hiragana также 3 байта: Ewxxyy.)

+0

Проблема, с которой я столкнулся, заключалась в том, что я извлекал японские символы из файла excel, отображал значения мусора браузера. Затем я попробовал кодировщик, который в итоге показал вопросительные знаки. Поэтому мне, наконец, пришлось использовать формат файла csv, который сработал. Теперь, сохраняя данные, я установил соединение как mysqli_set_charset ($ conn, 'utf8mb4'); , все остальные вещи, о которых вы упомянули, были установлены, но все же я получаю ошибку вставки. – FreeKrishna

+0

Я думаю, что исправил его, проблема в том, что я изменил формат таблицы на utf8mb4_unicode_520_ci, но формат столбца не изменился. Поэтому я изменил его обратно на utf8mb4_unicode_520_ci. Теперь я могу видеть японские символы в базе данных, как показано в браузере или файле. – FreeKrishna