使用 jQuery.get 检索 utf-8 数据

发布于 2024-10-21 17:25:29 字数 723 浏览 8 评论 0原文

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

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

üöIiçgIös

它显示为:

s��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');

I'm retrieving using jQuery to retrieve a text file from the server and load into the code mirror editor. (This is in Chrome)

When I have a test file with the following test string:

üöIiçgIös

It is displayed as:

s��Ii�gI�s

I load the data with a jQuery.get() call. Using Chrome's script debugger, I can see that jQuery is transforming the data somehow, basically translating it (poorly) into ASCII.

I've confirmed using a direct download the right data is loaded. Using Fiddler, I confirmed the content type is "text/plain;charset=UTF-8". Finally, I can see from the menu that the page as a whole has encoding UTF-8. But I can't figure out why jQuery is transforming the data.

Here's my jQuery code to load the data.

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');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

久而酒知 2024-10-28 17:25:29

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

确保显示数据的页面的 中包含此内容:

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

此外,请确保在编辑文本文件时,您实际上是在编辑它以 UTF-8 格式。

I've used jQuery for several years, and have never seen it "transform" data as you describe. I'm not sure that is even possible.

Make sure the page where the data is displayed has this in the <head>:

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

Also, make sure that when you edit your text file, you're actually editing it in UTF-8.

雨巷深深 2024-10-28 17:25:29

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

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

  • 用记事本打开文件
  • 文件->;另存为
  • 在保存之前,在底部下拉列表中选择编码
  • 完成!

Usually it is because of wrong data from your database.
Try to add these commands after connecting to the database:

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

If this is not helping then try to add this header in the php file:

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

Its good to know that any file (php, html...) have to be in utf-8 encoding. Easiest way to do that is:

  • Open file with notepad
  • File -> Save As
  • Before saving choose encoding at bottom drop down list
  • Done!
末が日狂欢 2024-10-28 17:25:29

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

对于 PHP:

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

如果您使用 PHP 等其他服务器端语言,那么您应该检查字符串编码的函数手册。

If encoding and header is set and still data is incorrect then, probably, problem is in server side (PHP, JAVA, ...). Check all string manipulation functions at server side.

For PHP:

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

If You are using other server side language as PHP then you should check function manual for string encoding.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文