7 php mysql utf-8 character-encoding
我有UT8编码的Flex应用程序.它将发送回Server(PHP),并将数据写入Mysql(UT8 charset,utf8_general_ci).我从/向数据库写/读Umlaute都没有问题.
我才意识到,通过使用PHPmyadmin查看数据,Umlaute以某种方式转换为:
ö=>Ãü=>ü等
正如我所说,我完全没有问题.奇怪的是,当我直接用PHPmyAdmin将Umlaute写入数据库时,它们会正确显示
现在我正在打印PDF,我需要在所有值上调用ut8_decode()来正确显示它们.但是,手动输入到DB(在phpmyadmin中正确显示)的那些不会被解码.
我假设那些不是写入UT8中的Db那么,因为解码会使它们变形吗?
谢谢,马丁
小智 19
我很长一段时间都在努力解决同样的问题.连接到数据库后立即运行此查询,您的Web应用程序将显示phpmyadmin中显示的字符:
SET NAMES'utf8'
出于某种原因,MySQL在我的系统上设置为假设输入和输出被编码为latin1,这意味着当我发送它utf8输入时它会错误地将它存储在数据库中,但是因为输出的转换是相反的,所以混乱被取消了它在浏览器中正确显示(除非使用phpmyadmin,它忠实地显示它).仅当转换导致存储它的数据库字段中使用的字符集允许的字符时才会出现这种情况,因此除非您停止使用上述查询进行此转换,否则您将收到错误.
MySQL中有很多不同的地方可以设置字符集,真是太棒了。
听起来你实际上并没有存储 UTF8,而是将 UTF8 字符串存储为 latin1。如果您在从数据库读取数据时以某种方式将它们转换为 UTF8,它们仍然会正确显示在您的应用程序中。
您是否将连接设置为 UTF-8,就像这样?
SET CHARACTER SET utf8;
SET SESSION character_set_server = utf8;
SET character_set_connection = utf8;