latin1到utf8转换问题

15 浏览
0 Comments

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  

但是结果并不好。

0
0 Comments

问题出现的原因是数据库连接的编码设置为了Latin1,而实际上需要使用UTF-8编码。解决方法是将数据库连接的编码设置为UTF-8。另外,可以参考提供的链接中的答案,了解如何在PHP中将UTF-8字符转换为ISO-8859-1编码及相反操作。可以使用mb_convert_encoding()函数来实现转换。希望对你有帮助。

0
0 Comments

在处理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"中的字母"ł"和"ą"将会正确显示。

0