在尝试做我认为相对简单的事情时,我遇到了无数的问题:
我需要有一个表单,可以接受用户输入的英语和其他语言的混合文本,一些多字节(即日语,韩语等),这得到了php处理,并存储在一个mysql数据库(安全,避免SQL注入)。它还需要从数据库访问、处理和在屏幕上使用。
我已经为拉丁字符设置好了,但是当我添加拉丁字符和多字节字符的混合时,它就变得乱码了。
我已经试着做作业了,但是现在我的头撞到了墙上。
魔术引号是关闭的,我已经尝试使用utf8_encode/decode,htmlentities,addslashes/stripslashes和(在mysql中)表中字段的"utf8_general_ci“和"utf8_unicode_ci”。
问题的一部分是,有太多的地方我可能会搞砸,以至于我不确定从哪里开始解决问题。
非常感谢你在这方面的帮助。理想情况下,如果有人有可以运行的php代码示例和/或知道正确的mysql表格式,那就太棒了。
发布于 2011-03-22 11:51:43
我不认为你有任何实用的替代UTF-8的方法。您将不得不追踪编码和/或解码的中断位置。首先,检查是否可以从mysql命令行或通过phpmyadmin将多语言文本往返到数据库。跟踪并消除该级别的问题。然后,通过模拟php的输入并检查输出,再次处理任何问题,从而更上一层楼。最后,将浏览器添加到组合中。
发布于 2011-03-22 12:48:48
以下是在UTF8模式下需要检查的事项清单:
SHOW STATUS LIKE 'char%',您将看到MySQL使用的是什么。您需要将character_set_client、character_set_connection和character_set_results设置为utf8,这可以通过在所有连接开始时执行SET NAMES 'utf8'在您的应用程序中轻松设置。这是大多数人忘记检查的,IME。LANG=(something).UTF-8.一旦你做好了这一切,你需要在你的应用程序中使用的就是mysql_real_escape_string()。
哦,(遗憾的是)有可能成功地将正确编码的UTf8文本存储在具有错误编码类型的列中,或者来自具有错误编码类型的连接。而且它也可以“正确”地返回。直到你修复了所有不是UTF8的部分,在这一点上它就会中断。
发布于 2011-03-22 12:07:45
首先,您需要检查是否可以直接将多语言文本添加到数据库中。如果可能,您可以在您的应用程序中执行此操作
https://stackoverflow.com/questions/5386454
复制相似问题