使用 jQuery.get 检索 utf-8 数据
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我已经使用 jQuery 好几年了,但从未见过它像您所描述的那样“转换”数据。我不确定这是否可能。
确保显示数据的页面的
中包含此内容:
此外,请确保在编辑文本文件时,您实际上是在编辑它以 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>
:Also, make sure that when you edit your text file, you're actually editing it in UTF-8.
通常是因为数据库中的数据错误。
连接到数据库后尝试添加这些命令:
如果这没有帮助,则尝试在 php 文件中添加此标头:
很高兴知道任何文件(php、html ...)都必须采用 utf-8 编码。最简单的方法是:
Usually it is because of wrong data from your database.
Try to add these commands after connecting to the database:
If this is not helping then try to add this header in the php file:
Its good to know that any file (php, html...) have to be in utf-8 encoding. Easiest way to do that is:
如果编码和标头已设置,但数据仍然不正确,那么问题可能出在服务器端(PHP、JAVA...)。 检查服务器端的所有字符串操作函数。
对于 PHP:
如果您使用 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:
If You are using other server side language as PHP then you should check function manual for string encoding.