【问题标题】:How to use Umlauts from PHP in Javascript如何在 Javascript 中使用 PHP 中的变音符号
【发布时间】:2011-11-26 09:35:57
【问题描述】:

我有一个包含德语变音符号(ä、ü、ö 等)的 MySQL 数据库。数据库字段都是 latin1_german1_c 编码的(如果重要的话)。

从该数据库中,我创建了一个用于 javascript 的 json 对象。但是,包含其中一个元音变音符号的每个值都会从一开始就设置为 null:

var json = <?php echo json_encode($results);?>;

然后:

>>> console.log(json[0].name)
null

我是否需要以不同方式对文档进行编码?我是否需要遍历 $results 数组并以某种方式对每个值进行编码?还是完全不同的东西?

【问题讨论】:

标签: php javascript character-encoding diacritics


【解决方案1】:

json_encodeDocs 期望字符串是 utf-8 编码的,而不是 latin-1 编码的 - 这就是值被重置为 NULL(未设置)的原因。

您需要将字符串从latin-1 重新编码为utf-8将它们与json_encode 一起使用之前。查找iconvDocsmb_string 库,两者都可以:

$utf8 = iconv($in = 'LATIN-1', $out = 'UTF-8', $latin1);

【讨论】:

  • Hakre,非常感谢您的回复。我试过了,但它似乎没有达到 php 级别。 $results[0]["name"] 是我从数据库中获得的一个字符串,其中包含一个变音符号。所以我尝试了这个: echo $weirdstring = $results[0]["name"]."\n"; print_r(json_encode(iconv("LATIN-1", "UTF-8//TRANSLIT", $weirdstring)));此输出:Mörseburg-Baumhauer false 抱歉,我似乎做错了什么?谢谢你的帮助!!
  • 看起来很有效,不是吗? (你可以去掉//TRANSLIT,那是假的)。不要忘记编码每个latin-1 字符串in 数组,然后json_encode 数组,而不仅仅是单个字符串。我将这些功能链接到手册,因此您可以了解更多信息。
猜你喜欢
  • 2016-12-15
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多