使用 jquery 发布和返回数据会损坏 å ä ö

Posted

技术标签:

【中文标题】使用 jquery 发布和返回数据会损坏 å ä ö【英文标题】:Posting and returning data using jquery corrupts å ä ö 【发布时间】:2011-11-03 02:03:30 【问题描述】:

这个问题网上有很多资料。尽管如此,我还没有解决它。

我在网页上有一个动态加载的表单。我使用 jquery $.post 提交它。我的页面是针对瑞典人的,所以它需要与 åäö 一起使用。

将数据发布到服务器时,它会将数据加载回新表中。返回的 å ä ö 已损坏。例子 åååäääööö = åååäääööö

服务器端是php。我对所有向浏览器返回内容的页面进行编码,如下所示:

<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>

我已经在服务器端尝试了 utf8_encode 和 utf8_decode。其实没有区别。

我尝试了这个: encodeURIComponent($(this).serialize()) 其中 $(this) 是要提交的表单。当然,这不起作用,我不知道如何编码像 $(this) 这样的对象。

我认为这是很多人都会做的事情,但它似乎不是一个标准的解决方案。

因此,我需要帮助的是如何使用 javascript/jquery/etc 发布表单。并在服务器端处理它,返回它并且 å ä ö 看起来应该如此。如果服务器接收到 utf8 完全没问题。原则应该是只使用UTF8然后问题就解决了吗?似乎应该有另一种解决方案。

【问题讨论】:

相关:***.com/questions/26620/… 【参考方案1】:

AJAX 使用 UTF-8 编码。如果您的数据不是 UTF-8 格式(例如 Windows 1251 或 ISO-8859-1),您将会遇到麻烦。

在标头中指定不同的编码方案不会将您的数据转换为 UTF-8。它只是告诉客户会发生什么。

我的座右铭:UTF-8 端到端或死亡!

【讨论】:

我也开始怀疑这一点。修复它的缺点是我必须转换所有页面,但我认为这样做是一个“好的商业案例”。 @Nicsoft:您可以尝试在传入的 AJAX 请求上使用 utf8_decode() 将输入值转换为 ISO-8859-1,但最好只使用 UTF8 来处理所有内容。 如果我转换我的文件,我应该使用带或不带 BOM 的 UTF-8? nicksoft:是的。幸运的是,MS Office 21010 现在允许 Word 用户以 UTF-8 保存。在此之前,对于许多 CMS 开发人员来说,这是“文字粘贴”的地狱。 是的 = 与? ;) 从互联网上复制代码(并使用 laint-1...),十六进制编辑器可以修复它时,它是否与地狱中的粘贴相同?

以上是关于使用 jquery 发布和返回数据会损坏 å ä ö的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 将 ÅÄÖ 视为 AAO?

带有 åäö(特殊字符)的 Alamofire GET 请求,无效 url

从数据库中选择双拼音域名

URL 中是不是允许扩展 ASCII 字符 [äöå]?

UTF-8 with mysql and php in freebsd swedish chars (åäö) [重复]

字符 Å Ä Ö 没有显示在我的 DDL 中,我如何告诉 restclient 使用特定的字符集?