【问题标题】:latin1 to utf8 conversion issue [duplicate]latin1 到 utf8 的转换问题 [重复]
【发布时间】:2016-12-03 22:33:03
【问题描述】:

我在从 latin1 转换到 utf8 时遇到问题
我有2个数据库,第一个在latin1,第二个在utf8

示例:
select * from latin1_db 给出
"SPÓŁDZIELNIA PRODUCENTÓW TRZODY ODRODZENIE BOBROWNIKI WĄGROWIEC"

但是当我插入到 utf8 db 时,它变成了
"SPÓ?DZIELNIA PRODUCENTÓW TRZODY ODRODZENIEBOBROWNIKI W?GROWIEC"

如何使两个字符串相同

我正在使用

$str=utf8_encode($str);  
$str=Encoding::fixUTF8($str);  

iconv  

但结果并不好。

【问题讨论】:

标签: php mysql utf-8 iso-8859-1


【解决方案1】:

你必须用

设置数据库连接编码
SET NAMES utf-8

作为 sql 查询。您没有随数据库请求提供代码,因此我无法更新您的代码来说明我的意思。使用 PDO 应该是

$pdo = new PDO(
    'mysql:host=yourdbhost;dbname=yourdbname',
    'username',
    'password',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

【讨论】:

  • 它给出“SPÓ?DZIELNIA PRODUCENTÓW TRZODY ODRODZENIE BOBROWNIKI W?GROWIEC”它不会改变字母 ł 或 ą
【解决方案2】:

将数据库连接编码设置为 UTF-8。

也看看这个答案:Convert utf8-characters to iso-88591 and back in PHP

mb_convert_encoding();

可能对你有用。

【讨论】:

    猜你喜欢
    • 2013-01-04
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2015-04-09
    • 2010-11-29
    • 2011-05-03
    相关资源
    最近更新 更多