我的一些脚本使用不同的编码,当我尝试将它们组合时,这就成了一个问题.
但是我不能改变他们使用的编码,而是想要从脚本A更改结果的编码,并将其用作脚本B中的参数.
那么:有没有简单的方法可以在PHP中将字符串从UTF-8更改为ISO-88591?我看过utf_encode和_decode,但是他们没有做我想要的.为什么不存在任何"utf2iso()" - 函数或类似的东西?
我不认为我的字符不能用ISO格式编写,所以这不应该是一个大问题.
$test = json_encode('??? ????');
echo $test;
Run Code Online (Sandbox Code Playgroud)
作为这段代码的结果,输出是:"\u0628\u0633\u0645 \u0627\u0644\u0644\u0647"虽然它应该像"بسمالله".阿拉伯字符在进行JSON编码时进行编码,而在Youtube API中则不是这样:http:
//gdata.youtube.com/feeds/api/videos/RqMxTnTZeNE?v = 2 &alt = json
您可以在Youtube上看到阿拉伯字符正确显示.可能是我的错误?
提示:我正在开发一个API <这个例子只是为了澄清.
当我在 xcode 中从服务器获取 JSON 数据时,如果结果内容为阿拉伯字符,则显示如下
\u0641\u0648\u0627\u0632
Run Code Online (Sandbox Code Playgroud)
这是什么编码?我怎样才能解码它?
我正在尝试将json_encoded字符串保存到数据库,但每当我这样做时,我得到这个:
u30abu30bf
Run Code Online (Sandbox Code Playgroud)
保存时:
??
Run Code Online (Sandbox Code Playgroud)
我怎么解码这样的东西?
试过php utf8_decode和编码,但我似乎没有工作,我也尝试阅读下面的线程:
这是$ flex_encoded的var_dump数据,然后将其作为参数传递:
//this one seems to passing the right encoding
[{"japanese_name":"\u30ca\u30ab\u30cd"},{"japanese_name":"\u30ca\u30ab\u30cd"}]
Run Code Online (Sandbox Code Playgroud)
这是函数调用:
$this->updateFlexData($game_id, $flex_encoded);
Run Code Online (Sandbox Code Playgroud)
这是更新我的数据库的功能:
function updateFlexData($game_id, $json_data)
{
$arrVal = array(
'json_data'=> $json_data,
);
Db::getInstance()->autoExecute('japanese_names', $arrVal, 'UPDATE', " game_id = '".$game_id."'", false);
}
Run Code Online (Sandbox Code Playgroud)
数据库列类型是:
`json_data` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
Run Code Online (Sandbox Code Playgroud)
我的PHP版本:
PHP版本5.3.10