我的域名中的字符编码存在很大问题。对我来说最重要的是我不理解它。我使用元标记将所有网站设置为utf-8:
<meta charset="UTF-8">
这似乎已经解决了一些问题。现在我发现网站和数据库之间存在问题,当用户输入他们的名字或姓氏时,它有一个重音,它没有正确显示。但是我进行了以下测试。
我创建了一个名为&#39; test&#39;的测试表。 (富有想象力我知道)
我写了一个非常小的脚本来从文本框中取出值并将其放入此表中,然后在每次显示此页面时显示该表的内容,这样我就可以看到发生了什么。
以下是一些屏幕截图,首先是页面输出:
然后是数据库本身的屏幕截图:
因此列first
的类型为VARCHAR(50)
,我只是按照惯例保留设置,字符编码为latin_swedish1或其他内容。在id
4之后,我将其更改为utf8_bin
,但这仍然没有什么区别。
问题是,数据在网站上仍然显示正常,但在数据库中看起来很糟糕。这是一个问题,这应该怎么做?我认为用户抱怨的问题是它被放入电子邮件和PDF等等,我不认为我设置了字符编码。
非常欢迎任何帮助和建议。
答案 0 :(得分:1)
分配3列类型时,如何分配?我会确保它与VARCHAR(n) CHARSET utf8
一致,因为这会使您的列类型更正为UTF8标准,更常见的是我看到UCS2(VARCHAR(n) CHARSET ucs2
),这可能会导致后续问题
您可以使用NVARCHAR
(请参阅http://dev.mysql.com/doc/refman/5.0/en/charset-national.html)自sql 5开始设置。
要自行更改列的类型,可以使用以下类型的命令:
Alter table tablenamehere MODIFY columnidhere newdatatypehere;
例如
Alter table mytabelforphp MODIFY oldvarcharcolumnId nvarchar(1024);
如果您需要更多信息,请告诉我们:)
答案 1 :(得分:1)
尝试使用utf8_general_ci
。这将解决麻烦。
答案 2 :(得分:1)
创建表时,确保charset为utf8。 创建表my_table( id int主键, ..... )engine = innodb charset = utf8;
并确保您的连接正在为utf8设置charset。这取决于您使用的每个框架。
您可以将内部字符设置为utf-8 / *将内部字符编码设置为UTF-8 * / mb_internal_encoding(&#34; UTF-8&#34);检查http://php.net/manual/en/function.mb-internal-encoding.php
答案 3 :(得分:0)