首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多语言文本、php和mysql帮助

问多语言文本、php和mysql帮助
EN

Stack Overflow用户
提问于 2011-03-22 11:35:36
回答 6查看 727关注 0票数 0

在尝试做我认为相对简单的事情时,我遇到了无数的问题:

我需要有一个表单,可以接受用户输入的英语和其他语言的混合文本,一些多字节(即日语,韩语等),这得到了php处理,并存储在一个mysql数据库(安全,避免SQL注入)。它还需要从数据库访问、处理和在屏幕上使用。

我已经为拉丁字符设置好了,但是当我添加拉丁字符和多字节字符的混合时,它就变得乱码了。

我已经试着做作业了,但是现在我的头撞到了墙上。

魔术引号是关闭的,我已经尝试使用utf8_encode/decode,htmlentities,addslashes/stripslashes和(在mysql中)表中字段的"utf8_general_ci“和"utf8_unicode_ci”。

问题的一部分是,有太多的地方我可能会搞砸,以至于我不确定从哪里开始解决问题。

非常感谢你在这方面的帮助。理想情况下,如果有人有可以运行的php代码示例和/或知道正确的mysql表格式,那就太棒了。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-22 11:51:43

我不认为你有任何实用的替代UTF-8的方法。您将不得不追踪编码和/或解码的中断位置。首先,检查是否可以从mysql命令行或通过phpmyadmin将多语言文本往返到数据库。跟踪并消除该级别的问题。然后,通过模拟php的输入并检查输出,再次处理任何问题,从而更上一层楼。最后,将浏览器添加到组合中。

票数 0
EN

Stack Overflow用户

发布于 2011-03-22 12:48:48

以下是在UTF8模式下需要检查的事项清单:

  • MySQL表编码。您似乎已经这样做了。
  • MySQL连接编码。执行SHOW STATUS LIKE 'char%',您将看到MySQL使用的是什么。您需要将character_set_client、character_set_connection和character_set_results设置为utf8,这可以通过在所有连接开始时执行SET NAMES 'utf8'在您的应用程序中轻松设置。这是大多数人忘记检查的,IME。
  • ,如果你使用它们,你的命令行界面和终端设置。在bash中,这意味着LANG=(something).UTF-8.
  • Your源代码(这通常不是问题,除非您有UTF8常量文本)。
  • 页面编码。你似乎在这一点上也是对的,但你的浏览器调试工具可以提供很多帮助。

一旦你做好了这一切,你需要在你的应用程序中使用的就是mysql_real_escape_string()。

哦,(遗憾的是)有可能成功地将正确编码的UTf8文本存储在具有错误编码类型的列中,或者来自具有错误编码类型的连接。而且它也可以“正确”地返回。直到你修复了所有不是UTF8的部分,在这一点上它就会中断。

票数 2
EN

Stack Overflow用户

发布于 2011-03-22 12:07:45

首先,您需要检查是否可以直接将多语言文本添加到数据库中。如果可能,您可以在您的应用程序中执行此操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5386454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档