0
即時通訊存儲文本作爲UTF8數據庫。UTF8文本回來奇怪的符號
當後通過JS發到我的API,這樣的符號如ö回來爲「ö」作爲
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我的API輸出與送出
我的網站的HTML聲明頭聲明UTF-8,像這樣:
$status_header = 'HTTP/1.1 '.$status.' '.self::getStatusCodeMessage($status);
header($status_header);
header('Content-type: ' . $content_type.'; charset=utf-8');
if ($body !== '') {
echo $body;
我已經成功地避開這個問題的唯一方法是使用PHP在我的輸出待辦事項這樣的:
private static function fixText($text) {
$replaceChars = array(
"“" => "\"",
'•' => '·',
"â€" => "\"",
"’" => "'",
'ö' => 'ö',
'â€' => "'",
"é" => "é",
"ë" => "ë",
"£" => "£"
);
foreach($replaceChars as $oldChar => $newChar) {
$text = str_replace($oldChar, $newChar, $text);
}
$text = iconv("UTF-8", "UTF-8//IGNORE", $text);
return $text;
}
顯然這並不理想,因爲我不得不在地圖上添加越來越多的符號。
UPDATE:
開發人員已經悄悄加入以下代碼:
$document->text = mb_convert_encoding($document->text, mb_detect_encoding($document->text), "cp1252");
,以此來克服老拉丁字符未來通過破壞。
什麼是字符集和你的數據庫和表格的排序規則? –
很好,你展示了你當前的解決方法,但是如果你也提供了更多關於你在做什麼的細節,那會更好。元標記和斷言你的API輸出是作爲utf-8發送的,並不值得繼續。 – Jon
對不起,我正在使用mongoDB,據我所知mongoDB始終是utf-8。更新的代碼示例。 – azz0r