Cra*_*ide 2 php utf-8 character-encoding
我有一个包含许多 UNICODE 代码的 JSON 字符串,我正在寻找一种使用 PHP 将它们转换为 UTF8 的方法。\nJSON 字符串的值如下:
\n\n{\n"capital":"Bras\\u00edlia",\n"symbol":"\\u20a1"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n然后是其他值,例如:
\n\n{\n"native": "\xd8\xa7\xd9\x84\xd9\x8a\xd9\x8e\xd9\x85\xd9\x8e\xd9\x86",\n"symbol_native": "\xd8\xb1.\xd9\x8a.\xe2\x80\x8f"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\nJSON 字符串包含在 PHP 变量中,如下所示:
\n\n$countries =\'{ \n "AR":{ \n "name":"Argentina",\n "native":"Argentina",\n "phone":"54",\n "continent":"SA",\n "capital":"Buenos Aires",\n "currency":{ \n "symbol":"AR$",\n "name":"Argentine Peso",\n "symbol_native":"$",\n "decimal_digits":2,\n "rounding":0,\n "code":"ARS",\n "name_plural":"Argentine pesos",\n "vat":"21",\n "vat_name":"IVA"\n },\n "tin":"CUIT",\n "languages":"es,gn",\n "iso":"ARG"\n }\';\n
Run Code Online (Sandbox Code Playgroud)\n\n已经尝试了网络上的大多数解决方案,但没有一个有效,尝试失败:
\n\nutf8_encode()\nmb_convert_encoding()\niconv()\nheader(\'charset=utf-8\');\n
Run Code Online (Sandbox Code Playgroud)\n\n我发现成功将 UNICODE 代码转换为 UTF8 的唯一方法是使用str_replace()
创建一个 UNICODE 代码数组和另一个具有等效 UTF8 值的数组,但我的数组不会涵盖所有可能的组合,所以我想知道是否有更简单的方法方法来做到这一点。
这适用于数组中的字符:
\n\nfunction unicodeToutf8($str){\n $repl = [\'\\u00e1\',\'\\u00e9\',\'\\u00ed\',\'\\u00f3\',\'\\u00fa\',\'\\u00f1\',\'\\u00c1\',\'\\u00c9\',\'\\u00cd\',\'\\u00d3\',\'\\u00da\',\'\\u00d1\'];\n $with = [\'\xc3\xa1\',\'\xc3\xa9\',\'\xc3\xad\',\'\xc3\xb3\',\'\xc3\xba\',\'\xc3\xb1\',\'\xc3\x81\',\'\xc3\x89\',\'\xc3\x8d\',\'\xc3\x93\',\'\xc3\x9a\',\'\xc3\x91\'];\n return str_replace($repl,$with,$str);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n谢谢你!
\n如果您只是尝试在不使用 unicode 转义序列的情况下重新编码 JSON,则操作方法如下:
json_encode(json_decode($input), JSON_UNESCAPED_UNICODE);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1802 次 |
最近记录: |