我在cp1251_general_ci歸類中有一個mysql varchar(50)行。 在php中mysql_fetch_row之後,我得到了一個$字符串。 然後我做到以下幾點:從MySQL cp1251_general_ci歸類(Windows-1251)轉換爲UTF-8 php
echo mb_detect_encoding($string,'CP1251,UTF-8,Windows-1251'); // echoes Windows-1251
$string = mb_convert_encoding($string, 'UTF-8', 'Windows-1251');
echo mb_detect_encoding($string,'CP1251,UTF-8,Windows-1251'); // again echoes Windows-1251
爲什麼第二次字符串不是UTF-8?
我也試過
$string = iconv('Windows-1251', 'UTF-8', $string);
但再出字符集爲Windows-1251。
而在最後的結果我得到了我的文件名中由$ string變量組成的編碼。
我怎樣才能從MySQL cp1251_general_ci整理(Windows-1251)轉換爲UTF-8?
P.S.
echo $string; \\ echoes ������
echo bin2hex($string); \\ echoes cce5e3e0f4eeed
$string = mb_convert_encoding($string, 'UTF-8', 'Windows-1251');
echo $string; \\ echoes Мегафон
echo bin2hex($string); \\ echoes d09cd0b5d0b3d0b0d184d0bed0bd
但
fopen("../tmp/$string.log", "w");
創建一個文件.../tmp目錄/ ??????????????。日誌(在Linux)
究竟是字符串的內容的精確編碼的決心?什麼是它的十六進制值('echo bin2hex($ string)')? – deceze
我在您的評論後更新了我的問題 – cofirazak