我在DB中有一个带有俄语值的项目。 我需要做的就是回应它们,但事实证明它比预期更困难。 所有俄罗斯人都只是打印成问号。 IE:??? ? ??????? 对于我尝试过的每种编码,所有英文字符都打印得很好。
为了简化我的故障排除,我在沙箱中玩游戏:
<?php
//header('Content-Type: text/html;charset=koi8-r');
//header('Content-Type: text/html;charset=windows-1251');
header('Content-Type: text/html;charset=utf-8');
if(!$link = mysql_connect('localhost', 'id', 'pass')) die('Could not connect: ' . mysql_error());
//mysql_set_charset('ISO-8859-1',$link);
//mysql_set_charset('ISO-8859-5',$link);
//mysql_set_charset('windows-1251',$link);
mysql_set_charset('UTF-8',$link);
//mysql_set_charset('KOI8-R',$link);
if (!$db = mysql_select_db('db', $link)) die ("Can't use DB : " . mysql_error());
$result = mysql_query('SELECT * FROM book');
while($row = mysql_fetch_assoc($result)) {
echo'<pre>';print_r($row);echo'</pre>';
$str = $row['russian'];
$str = mb_convert_encoding($str, "UTF-8", "KOI8-R");
echo $str;
}
?>
表字段具有koi8r_general_ci排序规则。 我尝试将其更改为ut8_bin和utf8_unicode_ci。 似乎都没有帮助,所以我把它改回来了。
正如您所看到的,我尝试了几种编码。 我还没找到修复方法。 我绝望了:)
~Mo
仅供参考:我在Win7-64上使用NetBeans进行编码。 Server = WAMP堆栈。
答案 0 :(得分:12)
解决!! 问题归结为一个简单的连字符。
在http://punbb.ru/viewtopic.php?id=1222上找到 我改变了这个......
mysql_set_charset('UTF-8',$link);
..对此...
mysql_set_charset('UTF8',$link);
..一切都很好。
(在尝试过程中,我也遇到了http://developer.loftdigital.com/blog/php-utf-8-cheatsheet,以防它有用。)
我希望这会在某个时间点帮助别人。 〜莫
仅供参考:这是我的沙盒脚本,效果很好
/* SANDBOX */
if(!$link = mysql_connect('localhost','user','pass')) die('Could not connect: ' . mysql_error());
mysql_set_charset('UTF8',$link);
if (!$db = mysql_select_db('db', $link)) die ("Can't use $_DB : " . mysql_error());
$result = mysql_query('SELECT * FROM book');
while($row = mysql_fetch_assoc($result)) {
echo'<pre>';print_r($row);echo'</pre>'; // For Testing ---->
}
mysql_close($link);