bbn*_*bnn 3 php bing-api microsoft-translator
我正在尝试使用Microsoft Bing API.
$data = file_get_contents("http://api.microsofttranslator.com/V2/Ajax.svc/Speak?appId=APPID&text={$text}&language=ja&format=audio/wav");
$data = stripslashes(trim($data));
Run Code Online (Sandbox Code Playgroud)
返回的数据在返回的字符串的第一个字符中有一个'\n'字符.它不是空间,因为我在返回数据之前对其进行了尝试.
''角色竟然是%EF%BB%BF.
我想知道为什么会这样,也许是微软的错误?
如何在PHP中删除此%EF%BB%BF?
Lee*_*Lee 17
除非您100%确定流将:(a)始终为UTF-8,并且(b)始终具有UTF-8 BOM,否则不应简单地丢弃BOM.
原因:
我认为处理这个问题的更合适的方法是:
/* Detect the encoding, then convert from detected encoding to ASCII */
$enc = mb_detect_encoding($data);
$data = mb_convert_encoding($data, "ASCII", $enc);
Run Code Online (Sandbox Code Playgroud)
$data = file_get_contents("http://api.microsofttranslator.com/V2/Ajax.svc/Speak?appId=APPID&text={$text}&language=ja&format=audio/wav");
$data = stripslashes(trim($data));
if (substr($data, 0, 3) == "\xef\xbb\xbf") {
$data = substr($data, 3);
}
Gum*_*mbo -3
您可以使用substr只获取没有UTF-8 BOM 的其余部分:
// if it\xe2\x80\x99s binary UTF-8\n$data = substr($data, 3);\n// if it\xe2\x80\x99s percent-encoded UTF-8\n$data = substr($data, 9);\nRun Code Online (Sandbox Code Playgroud)\n