我的网站正在使用charset iso 8859 1
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
当用户发布中文字符时,它将被保存到数据库中作为&amp; #2 0 3 2 0; &安培; #2 2 9 0 9;在检索时将输出为中文字符。
我需要将我的网站设置为UTF-8
当用户发布中文字符时,它将被保存为mysql中的一些时髦字符,并且在检索时,某些字符是正确的但有些字符是错误的。
我的问题是,在我设置为UTF-8后,如何将mysql保存为#2 0 3 2 0; &安培; #2 2 9 0 9;而不是时髦的角色。
我试图使用htmlentities。它不能正常工作。
我的脚本正在使用
$message = htmlentities(strip_tags(mysql_real_escape_string($_POST['message']),'<img><vid>'));
当它保存到mysql时就像这样ä½å¥½ 当它被检索到显示时就像这样ä½å¥½&lt; ----是以前存储在mysql中的时髦角色
答案 0 :(得分:5)
我看到很多与编码相关的问题 在发布之前,所有者应该谷歌一点
一般检查清单:
mysql --default-character-set=utf8
mysqli_set_charset
to utf-8 答案 1 :(得分:2)
你应该按照ajreal的建议将你的编码设置为UTF-8。
但是,从它的声音来看,您可能已经存储了数据库中必须转换的数据。
如果您的网站统一iso-8859-1
,则很可能中文字符存储为HTML字符实体,这意味着数据不会存储错误编码,转换字符集不会导致问题。如果您执行说明并发现之后字符显示不正确,可能是因为文本存储了错误编码,在这种情况下,可以采取措施来纠正这种情况。
可以使用类似
的语法转换现有列的字符集ALTER TABLE TableName MODIFY ColumnName COLUMN_TYPE CHARACTER SET utf8 [NOT NULL]
其中COLUMN_TYPE是CHAR(n)
,VARCHAR(n)
,TEXT
之一,方括号表示NOT NULL
是可选的。
“我的问题是,在我设置为UTF-8后,如何使mysql将文本保存为#2 0 3 2 0;&amp;#2 2 9 0 9;而不是时髦的字符。”
这可能最好用脚本语言而不是MySQL来解决。如果使用PHP,您可以将htmlentities()
用于此目的。
答案 2 :(得分:2)
如果您在使用其他编码后尝试转到UTF8,请尝试以下步骤:
运行ALTER TABLE tablename CONVERT TO CHARACTER SET UTF8 on your table
将MySQL配置为默认为UTF8,或者在建立数据库连接后运行SET NAMES UTF8查询。您只需要为每个连接运行一次,因为它将连接设置为UTF8。
在将内容传送到浏览器之前输出UTF8标头。标题('Content-Type:text / html; charset = utf-8');
在您的网页上包含UTF8内容类型元标记。 meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”
如果你做了所有这些步骤,一切都应该正常。
答案 3 :(得分:1)
用户N在你的价值观之前。像:
mysql_query ("insert into ".$mysql_table_prefix."links ( url, title) values ( N'$url ', N'$title');
答案 4 :(得分:0)
尝试告诉mysql在执行任何查询之前使用utf。您可以将此查询放在所有文件中使用的任何文件中。用排序规则替换"utf8_swedish_ci"
$sql='SET NAMES "utf8" COLLATE "utf8_swedish_ci"';
mysql_query($sql);