API 返回奇怪的字符而不是外语


api returning strange character instead of foriegn language

我正在尝试使用基于 ajax 的 API 来获取Urdu语言的内容,但问题是每当我访问 api 时,我都会看到奇怪的字符,我认为服务器在返回结果之前没有正确编码这些字符

接口端点

要返回正确的乌尔都语字符,您需要在将其发送到客户端之前使用mb_convert_encoding函数,但由于它只是公共 api,我无法访问他们的服务器,我不能这样做

我想将它们转换回正确的乌尔都语字符

像这样的东西

$strangeLetters = ''u06c1'u062a'u06d2 'u0641'u0644'u0633'u0637'u06cc'u0646'u06cc'u0648'u06ba 'u067e'u0631 'u0627'u0633'u0631'u0627'u0626'u06cc'u0644'u06cc 'u062c'u0627'u0631'u062d'u06cc'u062a 'u062c'u0646'u06af'u06cc 'u062c'u0631'u0627'u0626'u0645 'u06a9'u06d2 'u0632'u0645'u0631'u06d2 'u0645'u06cc'u06ba 'u0622'u062a'u06cc 'u06c1'u06d2'u060c 'u0648'u0632'u06cc'u0631'u0627'u0639'u0638'u0645';
$properUrduCharacters = someFunction(
$strangeLetters);
echo $properUrduCharacters;

结果:

ہتے فلسطینیوں پر اسرائیلی جارحیت جنگی جرائم کے زمرے میں آتی ہے، وزیراعظم

使用 PHP 显示 unicode 数据的快速简便方法:

echo json_decode('"'u06c1"');

此处的其他解决方案:如何将 Unicode 转义序列(如"''u00ed")解码为正确的 UTF-8 编码字符?

对于您的示例:

<?php
$strangeLetters = ''u06c1'u062a'u06d2 'u0641'u0644'u0633'u0637'u06cc'u0646'u06cc'u0648'u06ba 'u067e'u0631 'u0627'u0633'u0631'u0627'u0626'u06cc'u0644'u06cc 'u062c'u0627'u0631'u062d'u06cc'u062a 'u062c'u0646'u06af'u06cc 'u062c'u0631'u0627'u0626'u0645 'u06a9'u06d2 'u0632'u0645'u0631'u06d2 'u0645'u06cc'u06ba 'u0622'u062a'u06cc 'u06c1'u06d2'u060c 'u0648'u0632'u06cc'u0631'u0627'u0639'u0638'u0645';
$strange = explode(''u', $strangeLetters);

foreach($strange as $letter){
  echo json_decode('"'u'.$letter.'"');
}
var_dump($strange);