在PHP中使用json_encode打印具有特殊字符的字符串时出错


Error while printing a string with special characters in PHP, with json_encode

我需要打印以下字符串,但在php中得到了另一个输出。

   $test = "?s'd – b]zel/";
   echo $test;

输出为:?s’dâ€"b]zel/我需要输出相同的字符串。字符"-"是尼泊尔字体中的特殊字符。但是,它显示的是"€"而不是–。那么,解决方案是什么??

编辑当我使用json_encode($test)时,我得到了输出"?s’d''u2013 b]zel/"。但我不需要unicode,我需要"?s’d–b]zel/"作为输出。我该怎么办??

确保指定页面的字符集:

<meta charset="utf-8">

您需要确保应用程序的每个部分都是UTF-8。数据库连接、表数据、页面字符集等。请参阅此答案。

这很可能是因为您使用了UTF8编码的字符(因此您的不是"正常"的短划线-,但同时您的HTML文档没有使用UTF8编码,返回到(通常)Latin1。要么"清理"$test字符串,要么修复HTML以正确声明使用的编码:

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

我假设您在控制台上运行PHP——如果是这样的话,您应该更改控制台设置。

如果你在网络上运行,你应该更改页面编码或转义你显示的字符。这可以通过在HTML中添加以下内容来完成:

确保文档和HTML编码相同(推荐使用UTF8)。

您的PHP字符集是由您正在使用的文本编辑器设置的。

你的HTML字符集可以通过发送一个标题来确定(这是推荐的方式!)

header("Content-type: text/html; charset=utf-8");