DBCS не сохраняется должным образом - PullRequest
1 голос
/ 25 января 2011

У меня есть файл edit.php, который позволяет мне редактировать содержимое веб-формы.Весь текст хранится в .txt файлах.Проблема возникает, когда я пытаюсь ввести символы на японском, корейском и т. Д.

Я введу это: "1003 *

и, как только я сохраню его, он вернет это:"% u305F% u3093% u3058% u3087% u3073% u304A% u3081% u3067% u3068% u3046"

Есть ли у кого-нибудь какие-либо идеи относительно правильного сохранения символов.Я нахожу, что если я изменю кодировку в файлах .txt на UTF-8 и введу символы с помощью блокнота, а не с помощью edit.php, это будет нормально сохранять, хотя я бы предпочел этого не делать.

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ
Я не был уверен, какой код поместить, но я предполагаю, что это связано с моим способом сохранения,Вот мой файл save.php:

$content = $_POST['content'];  
if($content == ''){  
 echo "You cannot null this field, please reload the page.";  
} else {  
  echo $content;  
  $myFile = "text/".$_POST['id'].".txt";  
  $fh = fopen($myFile, 'w') or die("Could not update");  
  fwrite($fh,$content);  
  fclose($fh);  
}

1 Ответ

0 голосов
/ 27 января 2011

Вам необходимо проверить, какую кодировку символов вы вводите (вероятно, ISO 8859-1 или CP 1252 в Windows).

В любом случае преобразование возвращаемой строки в желаемую выходную кодировку должно быть простым, так как ваша строка:

% u305F% u3093% u3058% u3087% u3073% u3081% u304A% u3067% u3068% u3046

Это 10 escape-последовательностей Юникода (UTF-8) для японца, которого вы ввели («С днем ​​рождения»). Когда вы вводите их непосредственно в текстовый файл, я предполагаю, что приложение правильно устанавливает кодировку.

Если это веб-форма, проверьте, какая кодировка установлена ​​в заголовке запроса, например:

Content-Type    text/xml;charset=utf-8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...