Получение данных utf-8 с помощью jQuery.get - PullRequest
1 голос
/ 12 марта 2011

Я использую jQuery для извлечения текстового файла с сервера и загрузки в редактор зеркал кода. (Это в Chrome)

Когда у меня есть тестовый файл со следующей тестовой строкой:

üöIiçgIös

Отображается как:

sIigIs

Я загружаю данные с помощью вызова jQuery.get (). Используя отладчик скриптов Chrome, я вижу, что jQuery каким-то образом преобразует данные, в основном переводя их (плохо) в ASCII.

Я подтвердил, используя прямую загрузку, правильные данные загружены. Используя Fiddler, я подтвердил, что тип контента «text / plain; charset = UTF-8». Наконец, из меню видно, что страница в целом имеет кодировку UTF-8. Но я не могу понять, почему jQuery преобразует данные.

Вот мой код jQuery для загрузки данных.

jQuery.get(path+file,null,function(data)
{
  var initialContent = data;
  if(!initialContent)
  {
    initialContent = "\n";
  } 

  document.getElementById("fileContent").value = initialContent;
  config.content = data,
  editor = new CodeMirror(document.getElementById("codeMirrorDiv"), config);
},'text');

Ответы [ 3 ]

1 голос
/ 12 марта 2011

Я использовал jQuery в течение нескольких лет и никогда не видел, чтобы он «преобразовывал» данные, как вы описываете.Я не уверен, что это даже возможно.

Убедитесь, что страница, на которой отображаются данные , имеет это в <head>:

<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />

Кроме того,убедитесь, что при редактировании вашего текстового файла вы действительно редактируете его в UTF-8.

0 голосов
/ 07 ноября 2014

Если кодировка и заголовок установлены, а данные по-прежнему неверны, возможно, проблема в серверной части (PHP, JAVA, ...). Проверьте все функции работы со строками на стороне сервера.

Для PHP:

$WRONG_string = substr($string, 0, 10);
$CORRECT_string = mb_substr($string,0,10,'utf-8');

Если вы используете другой язык на стороне сервера в качестве PHP, вам следует проверить руководство по функциям для:строковое кодирование.

0 голосов
/ 05 марта 2014

Обычно это из-за неправильных данных из вашей базы данных.
Попробуйте добавить эти команды после подключения к базе данных:

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");

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

header('Content-Type: text/html; charset=utf-8');

Хорошо знать, что любой файл (php, html ...) должен быть в кодировке utf-8. Самый простой способ сделать это:

  • Открыть файл с помощью блокнота
  • Файл -> Сохранить как
  • Перед сохранением выберите кодировку внизу выпадающего списка
  • Готово!
...