灯管堆栈/用户输入和字符编码

灯管堆栈/用户输入和字符编码

问题描述:

是否有解决所有字符编码问题的一站式解决方案?我总是在用户输入,数据库存储和数据检索(html表单)之间的某处出现问题,我希望我所有的数据和网页都被编码为utf-8,但似乎我总是以无效的utf- 8字符灯管堆栈/用户输入和字符编码

我并没有真正站在字符编码上,但自从我开始使用法语字符以来,我一直在遇到问题。其他开发者之一在将所有内容发送到数据库之前urlen编码,然后urldecodes所有这一切都让我不寒而栗

据我所知,一个html表单将接受任何字符,具体取决于用户环境,它取决于服务器端尝试将其转换为UTF-8或任何喜欢的?

任何进一步的信息将不胜感激!

整个使用UTF-8是的一站式解决方案。不幸的是,它伴随着对实践中出现的问题的理解。如果您遇到特定问题,请在SO上发布具体问题。

Wrt。 HTML表单:不,它并不真正取决于用户的环境。浏览器将(或者应该 - 实际上是)以与页面所在表单相同的编码发送数据。确保发送给用户的每个HTML页面在HTTP Content-type头中都有一个charset =字段;为了更好的衡量,还要在HTML文件本身中添加一个http-equiv元标记(这有助于用户缓存或保存HTML页面)。所以当HTML页面是UTF-8时,浏览器发送的数据也是UTF-8。

+0

感谢您清理关于用户表单输入的灰色区域 – brndnmg 2009-08-29 08:51:28

在我的项目被发送到我的数据库中的第一个查询是

SET NAMES“utf-8”;

简单地建立一个MySQL连接。

数据转储也一样。当我将数据库转储到.sql文件时,我在开头插入上述查询。

它适用于我几年没有问题在许多托管公司和专用服务器。

+0

我假设我的表格的排序规则为“utf8_general_ci”? – brndnmg 2009-08-29 08:50:57

+0

这取决于您使用的是哪种本地语言。例如,我正在波兰开发我的应用程序,所以我使用utf8_polish_ci,因为波兰字母表包括字母(±,ê,ć,ł等),因此我需要MySQL知道,在对文本数据进行排序时, Ł在L之后等等。 – astropanic 2009-08-29 09:37:47