php utf8_编码-字符前面加上\u

php utf8_编码-字符前面加上\u,php,unicode,utf-8,Php,Unicode,Utf 8,我从数据库中获取了一个ISO字符串,当我对它进行utf8_编码时,得到的是一个\u00f6而不是Ö。这会混淆使用此PHP脚本的javascript/html。为什么有一个\u00f6而不是Ö?如何取而代之 编辑: 好的,我做了更多的实验,结果证明这是由utf8_编码和json_编码的组合造成的。尽管如果我根本不进行utf8_编码,json中的值将为null json_encode(array("city"=>utf8_encode("göteborg"))) 你是怎么打印的?javasc

我从数据库中获取了一个ISO字符串,当我对它进行utf8_编码时,得到的是一个\u00f6而不是Ö。这会混淆使用此PHP脚本的javascript/html。为什么有一个\u00f6而不是Ö?如何取而代之

编辑: 好的,我做了更多的实验,结果证明这是由utf8_编码和json_编码的组合造成的。尽管如果我根本不进行utf8_编码,json中的值将为null

json_encode(array("city"=>utf8_encode("göteborg")))

你是怎么打印的?javascript本机支持\uxxx编码,并在javascript中执行此操作:

var x = "\u00f6"; alert(x); 
应该打印一个小的

编辑:根据您的代码,如果您将其直接输出到响应流,并在客户端的js中使用实际响应作为变量,那么您根本不应该关心json_encode

您只需通过设置内容类型标题来告诉浏览器内容是utf8:

header('content-type: text/plain;charset=utf8');

然后jQuery.data()代码就可以正常工作了。

utf8\u encode
不会将字符编码到
\uxxx
,正如您自己所理解的那样,它是
json\u encode
完成的。这很好,因为JSON格式指定了这种行为。如果客户端正确地将JSON字符串解码为Javascript数据类型,则转义将转换为正确的Unicode字符


至于
json\u encode
如果您的字符串是拉丁语编码的,则丢弃字符:手册页面上没有明确说明,但Javascript和json完全基于Unicode,因此我怀疑拉丁语对json字符串使用无效且意外的编码,因此它会中断。

我设置了一个jQuery。输入到它的数据(值),然后我获取数据并将其放入元素中。我直接在html中获取\u00f6。奇怪的是,如果我在PHP中执行utf8_编码($lots of$variable),我不会得到\uxxx,但是如果我执行utf8_编码($variable),我会得到\uxxx.value是XHR请求的实际响应吗?我猜生成的输出(但我不认为是utf8_encode实现了这一点)需要输出到js代码中,这意味着json序列化或等效。因此,如果您只想获取输出并将其放入变量,则不应对其进行编码。+1。如果您选中,您将看到,
\u00f6
是表示
的有效JSON。另外,将JSON响应严格保存在ASCII集中还有一个额外的好处。我更新了我的答案,以反映您试图实现的目标,但由于您没有告诉我们如何获取数据以及如何发送数据,所以这只是一个猜测。从进行转换和打印的ajax页面粘贴php代码。