latin1到utf8转换问题
latin1到utf8转换问题
我在从latin1
转换为utf8
时遇到问题。
我有两个数据库,第一个是latin1
,第二个是utf8
。
例子:
select * from latin1_db
的结果是
"SPÓŁDZIELNIA PRODUCENTÓW TRZODY ODRODZENIE BOBROWNIKI WĄGROWIEC"
但是当我插入到utf8数据库时,变成了
"SPÓ?DZIELNIA PRODUCENTÓW TRZODY ODRODZENIEBOBROWNIKI W?GROWIEC"
如何使这两个字符串相同?
我试过使用以下方法:
$str=utf8_encode($str); $str=Encoding::fixUTF8($str);
和
iconv
但是结果并不好。
在处理latin1到utf8转换时出现问题的原因是没有正确设置数据库连接编码。解决方法是在数据库查询中使用SET NAMES utf-8
来设置数据库连接编码。以下是一个示例代码(使用PDO连接数据库):
$pdo = new PDO( 'mysql:host=yourdbhost;dbname=yourdbname', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
通过以上代码,数据库连接将使用utf-8编码,以正确处理latin1到utf8转换。这样做可以确保转换后的结果正确显示,例如:"SPÓŁDZIELNIA PRODUCENTÓW TRZODY ODRODZENIE BOBROWNIKI WĘGROWIEC"中的字母"ł"和"ą"将会正确显示。