因此,我有一个字符串数组,所有字符串都使用系统默认的 ANSI 编码,并从SQL数据库中提取。因此,存在256个不同的可能字符字节值(单字节编码)。
有没有一种方法可以使我json_encode()
工作并显示这些字符,而不必utf8_encode()
在我的所有字符串上使用并最终得到类似的东西\u0082
?
还是这是JSON的标准?
有没有一种方法可以使json_encode()工作并显示这些字符,而不必在所有字符串上都使用utf8_encode()并以“ \
u0082”之类的内容结尾?
如果你有一个ANSI编码的字符串,使用utf8_encode()
的是 错误的
函数来处理这个问题。您需要先将其从ANSI正确转换为UTF-8。这肯定会减少Unicode转义序列的数量,例如\u0082
从json输出中获取,但是从技术上讲,这些序列对json有效,您不必担心。
json_encode
仅
适用于UTF-8
编码字符串。如果需要从编码的字符串成功创建有效的字符串,则需要将其重新编码/转换为first。然后将按文档所述工作。
__json``ANSI``UTF-8``json_encode
要将编码从ANSI
(更正确地说,我假设您有一个Windows-1252
编码的字符串,该字符串很流行,但错误地称为ANSI
)转换为UTF-8
您可以使用以下mb_convert_encoding()
函数:
$str = mb_convert_encoding($str, "UTF-8", "Windows-1252");
PHP中另一个可以转换字符串的编码/字符集的函数是iconv
基于libiconv调用的。您也可以使用它:
$str = iconv("CP1252", "UTF-8", $str);
utf8_encode()
只为Latin-1
而不是为ANSI
。因此,当您通过该函数运行字符串时,将破坏该字符串中的部分字符。
有关返回内容的更细粒度控制json_encode()
,请参见预定义常量列表(取决于PHP版本,包括PHP
5.4,某些常量尚未记录,仅到目前为止在源代码中可用)。
正如您在注释中写道,将函数应用于数组有问题,这是一些代码示例。它 总是 需要 先
更改编码使用前json_encode
。这只是一个标准的数组操作,比较简单的情况下pdo::fetch()
一个foreach
迭代:
while($row = $q->fetch(PDO::FETCH_ASSOC))
{
foreach($row as &$value)
{
$value = mb_convert_encoding($value, "UTF-8", "Windows-1252");
}
unset($value); # safety: remove reference
$items[] = array_map('utf8_encode', $row );
}
问题内容: 这个问题已经在这里有了答案 : UTF-8贯穿始终 (15个答案) 5年前关闭。 寻求 我正在寻找具有重音符号的行。列()的编码为。 编码 以下查询使用phpMyAdmin 返回: 以下显示期望值(称为函数): 显示的值: 然后使用以下代码对数组进行编码: 问题 Web浏览器收到以下值: 代替: (或等效的编码形式。) 题 文档指出可以在UTF-8上使用。我可以看到将值从LATIN1编
问题内容: 如何将带有国际字符的json编码的字符串保存到数据库,然后在浏览器中解析解码的字符串? 问题答案: 这是一个编码问题。看起来在某些时候,数据被表示为ISO-8859-1。 流程的每个部分都需要UTF-8编码。 数据库连接 数据库表 您的PHP文件(如果您在文件中使用特殊字符,如上面的示例所示) 您输出的标题
问题内容: 我有大量的文件和解析器。我要做的是剥离所有非utf-8符号并将数据放入mongodb中。目前,我有这样的代码。 不知何故我仍然出现错误 我不明白 有一些简单的方法吗? UPD :似乎Python和Mongo对Utf-8有效字符串的定义不同意。 问题答案: 请尝试在下面的代码行而不是最后两行。希望能帮助到你:
问题内容: 如何使用Android解码utf-8字符串?我尝试使用此命令,但输出与输入相同: 问题答案: 字符串不需要编码。它只是一个Unicode字符序列。 要将字符串转换为字节序列时需要进行 编码 。您选择的字符集(UTF-8,cp1255等)确定了Character-> Byte映射。请注意,字符不必转换为单个字节。在大多数字符集中,大多数Unicode字符都转换为至少两个字节。 字符串的编
问题内容: 我必须用Java处理这种情况: 我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。 让我们考虑一个示例,其中该无效XML包含£(磅)。 1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,
问题内容: 我遇到了这行遗留代码,我试图找出这些遗留代码: 据我了解,它是使用相同的charSet进行编码和解码。 这与以下内容有何不同? 在任何情况下,两条生产线的输出将不同? ps:只是要澄清一下,是的,我知道Joel Spolsky撰写的关于编码 的出色文章! 问题答案: 这可能是很复杂的方式 这缩短了String,而所使用的基础char []则更长。 但是,更具体地说,将检查每个字符是否都