当用户试图用德语保存他们的名字时,他们会像这样保存:
Markus Müller ( Markus Müller)
Angela Eisenbl�tter ( Angela Eisenblätter )
Doris Vötter ( Doris Vötter )
我在用萤火虫保存之前检查了这些值,它们正常显示。但是当他们被保存时,他们会像 我的表的结构是这个
name varchar(250) utf8_unicode_ci
email varchar(250) utf8_unicode_ci
company varchar(250) utf8_unicode_ci
reading int(11)
rdate timestamp
请帮帮我
更新
$con=mysqli_connect("localhost","englisch_root","b00t","englisch_efront");
mysql_set_charset('utf8', $con);
在我添加这样的内容之后,它会给出错误的错误 警告:mysql_set_charset()期望参数2是资源,
答案 0 :(得分:4)
将mysql_set_charset('utf8');
替换为mysqli_set_charset($con, 'utf8');
(或$con->set_charset('utf8');
)。您不能将功能相对于不同PHP扩展的数据库(mysql vs mysqli)进行混合:它们在不同的连接上工作,因此它们是互不兼容的。
注意:
utf8
,而非utf-8
SET NAMES
语句,这不安全:如果必须更改连接的字符集,请使用
mysql_set_character_set()
函数,而不是执行SET NAMES
(或SET CHARACTER SET
)语句。mysql_set_character_set()
的作用类似于SET NAMES
,但也会影响mysql_real_escape_string()
使用的字符集,其中SET NAMES不会。
(from MySQL's documentation about mysql_real_escape_string
,mysql(i)_set_charset PHP函数背后的C函数)
答案 1 :(得分:0)
首先阅读此http://www.joelonsoftware.com/articles/Unicode.html以便明确编码。
然后按照本文http://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql
您需要确保在所有地方使用UTF-8编码。 Html页面,数据库架构,表格,列整理,Db连接等。
答案 2 :(得分:0)
用户表列数据是ASCII而不是utf8_unicode_ci。
答案 3 :(得分:0)
使用mysqli_query($link,"SET CHARACTER SET utf8");
之前,查询解决了我的问题。附:我建议使用 mysqli_set_charset 。
答案 4 :(得分:0)
两个问题......
SELECT HEX(col), col FROM ... WHERE ...
- 对于“Müller”,如果正确存储为utf8,则应该4DC3BC6C6C6572
。如果你没有得到,那么你有latin1或“双重编码”,修复数据会更复杂。
如果您在网页上显示此内容,则顶部附近需要一个合适的标签。