正在使用mysql和php。從mysql表讀取數據時出現奇怪的字符
在我的數據庫,我有一個像下面列的值。
Preaqueça o forno médio (180ºC).
但是,當我檢索它使用php它顯示下面的字符串。
Preaqueu00e7a o forno mu00e9dio (180u00baC).
字符編碼有些問題。任何想法來解決它?
正在使用mysql和php。從mysql表讀取數據時出現奇怪的字符
在我的數據庫,我有一個像下面列的值。
Preaqueça o forno médio (180ºC).
但是,當我檢索它使用php它顯示下面的字符串。
Preaqueu00e7a o forno mu00e9dio (180u00baC).
字符編碼有些問題。任何想法來解決它?
我使用json_encode顯示從選擇查詢的輸出。這是造成這個問題的原因。
function my_json_encode($arr)
{
//convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
使用此函數而不是默認的json_encode.And它的工作原理。
你似乎有兩個問題。
ç
是Mojibake爲ç
和º
是Mojibake爲º
。對於這一點,你需要檢查:
可見)
十六進制00e7
看起來像ç
的「Unicode編碼點」,但尚不清楚您是如何創建它的。通過做SELECT col, HEX(col) FROM ...
看看得到什麼存儲
讓我們開始。還提供SHOW CREATE TABLE
。 (在Test the data更多細節。)
固定變爲亂碼的問題,做了HEX後,啓動一個新的問題。 (我擔心,這個線程將獲得太亂來保持。)
確保您的所有系統都使用正確的編碼(可能是UTF)? –
從哪裏檢索和顯示共享代碼? – C2486
你的表格配置屬於這樣的DEFAULT CHARSET = utf8 – Karthi