我的母语使用重音,我通常在php中使用utf8_encode来utf8_decode函数以避免出现问题。
现在我有一个类型为varchar(utf8_bin)的MySql字段和另一个类型为longtext(utf8_bin)的字段。 Varchar返回奇数字符,而longtext工作正常。
他们用php管理的方式有区别吗?
$a = "Início";
echo utf8_encode($a)."<br>";
echo utf8_decode($a);
Using MySql field of type varchar I get
InÃcio
In�cio
Using MySql field of type text or longtext I get
Início
witch is the correct output I need.
答案 0 :(得分:3)
他们用php管理的方式有区别吗?
没有
答案 1 :(得分:2)
在运行SQL以获取文本之前,您是setting the mySQL charset吗?关于字符编码问题,请参阅here,当字段中已有内容时,您是否转换了字段编码?
不幸的是,像这样的直接转换会破坏文本 数据库并使其无法读取,特别是如果有实际的话 国际字符(即非拉丁语言)。原因 这种扭曲是复杂的,难以理解,但结果却是如此 是每列必须转换两次
[...]
如您所见,我们首先将LONGTEXT列转换为其blob类型 对应:LONGBLOB。完成后,我们将其转换回 LONGTEXT,但是我们想要的字符集utf8;
听起来你对常见的编码问题非常不满意,但如果不是check here。