【问题标题】:How to encode UTF-8 character in javascript?如何在 javascript 中编码 UTF-8 字符?
【发布时间】:2012-06-27 14:42:49
【问题描述】:

我在显示 mysql 数据库中的值时遇到问题。所以值在mysql数据库中保存为UTF-8(正确),我正在将JSON格式的数据检索到javascript(正确),然后当我在javascript中打印结果时,我没有看到正确的迹象,因为我正在使用克罗地亚语字母表。

我已经把它放在了头部:

<meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/> 在脚本部分:

<script type="text/javascript" charset="utf-8">

接下来我能做什么?

【问题讨论】:

  • 您使用的是什么服务器端视图技术?它需要设置为那里的HTTP响应Content-Type标头的charset属性。元标记在 HTTP 响应中被忽略,例如,仅当您让 Web 浏览器将 HTML 输出保存到磁盘然后通过file:// URI 而不是http:// URI 从磁盘打开它时使用。
  • 你的意思是我使用的是什么服务器端视图技术?我正在获取 JSON 格式的数据,并且它具有可见的 utf-8 符号
  • 呃,简单地说,你用什么来生成 HTML? PHP、ASP、JSP、JSF、Python、RoR 等。?或者它是一个静态 HTML 文件,并且您使用的是没有任何默认内置支持的 HTTP 服务器,如 Apache HTTPD 之类的视图技术?
  • 现在你让我有点困惑了。页面是用静态 html 编写的,但我使用的是 javascript,因为我有一个谷歌地图。所以我从服务器中提取数据以便在谷歌地图中填充数据。我刚刚尝试从克罗地亚字母表中的 javascript 向 console.log() 中写入一些内容,并且它工作正常,因此在从服务器检索数据时可能会出现问题。现在我看到 JSON 没有给我正确的价值。所以是php问题
  • 那么,您使用 PHP 作为视图技术吗?然后提及(并标记)。我已经发布了答案。

标签: javascript utf-8


【解决方案1】:

字符编码必须设置在真正的 HTTP 响应 Content-Type 标头上,而不仅仅是元标记上。当 HTTP 请求检索 HTML 输出时,元标记将被忽略。在 webbrowser 的开发者工具集中,您可以通过在 Chrome/IE9/Firebug 中按 F12 获得,您必须能够浏览 HTTP 响应标头,如下所示:

根据 cmets,您显然是在使用 PHP 为 HTTP 响应生成 HTML 输出。然后,您应该使用其header() 函数来设置正确的响应标头。将以下行添加到您的 PHP 脚本之前任何字符被写入响应。

header("Content-Type: text/html;charset=UTF-8");

另见:

【讨论】:

  • 我写了这个:header("Content-type: application/json; charset=UTF-8");,但我仍然有同样的问题
  • 那么您在检索和打印它的方式上也存在问题。请参阅 PHP UTF-8 备忘单。确保使用 UTF-8 从 MySQL 检索数据,并确保 PHP 使用 UTF-8 打印它。如果你使用老式的mysql_*函数而不是PDO,你还需要事先执行SET NAMES 'utf8'
  • 好吧,如果你绝对肯定你在从数据库到模型、控制器和视图的所有层中使用 UTF-8,那么它显然没有正确存储为 UTF-8首先在数据库中。请注意,这个问题绝对不在 JavaScript 中,因为它本身就已经支持 Unicode BMP。更多地关注 MySQL/PHP 配置和 HTTP 响应处理。
猜你喜欢
  • 2021-08-24
  • 1970-01-01
  • 2022-01-13
  • 2016-10-02
  • 2011-08-06
  • 2017-01-02
  • 1970-01-01
  • 2014-06-09
  • 2017-07-27
相关资源
最近更新 更多