2

我正在检索使用 jQuery 从服务器检索文本文件并加载到代码镜像编辑器中。(这是在 Chrome 中)

当我有一个包含以下测试字符串的测试文件时:

üöIiçgIös

它显示为:

符号

我使用 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');
4

3 回答 3

1

我已经使用 jQuery 好几年了,从来没有见过它像你描述的那样“转换”数据。我不确定这是否可能。

确保显示数据的页面在<head>:

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

另外,请确保在编辑文本文件时,实际上是在以 UTF-8 进行编辑。

于 2011-03-12T01:21:16.960 回答
0

通常是因为数据库中的数据错误。
连接数据库后尝试添加这些命令:

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 编码。最简单的方法是:

  • 用记事本打开文件
  • 文件 -> 另存为
  • 保存之前在底部下拉列表中选择编码
  • 完毕!
于 2014-03-05T10:59:08.423 回答
-1

如果设置了编码和标头但数据仍然不正确,那么问题可能出在服务器端(PHP、JAVA、...)。检查服务器端的所有字符串操作函数。

对于 PHP:

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

如果您使用其他服务器端语言作为 PHP,那么您应该查看函数手册以了解字符串编码。

于 2014-11-07T09:00:10.873 回答