我使用以下代码在我的数据库中存储和更新数据。
<?php
header("Content-Type: text/html;charset=UTF-8", true);
mysql_connect("localhost", "test", "test") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
// mysql_set_charset('UTF8');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
mysql_query("UPDATE `test`.`english` SET age = '".$age."', city = '".mysql_real_escape_string($_REQUEST['city'])."', aboutMe = '".$_REQUEST['about']."' WHERE `english`.`username` = '".$_REQUEST['username']."' LIMIT 1 ;")
or die(mysql_error());
代码运行良好。但是如果是字符串,例如“city”包含ä,ö,ü它存储为? 因此,例如“Bär”这个词会转到“B?r”。
我已经添加了这些utf8的东西,但它没有帮助。 服务器只支持php4.x
编辑:数据库使用latin1_general_ci作为整理。
答案 0 :(得分:0)
使用utf8作为整理,可能是utf8_bin
或utf8_unicode_ci
(ci意味着它不区分大小写,所以像“John”=“JOHN”这样的比较返回true)。您可以通过在MySQL中运行以下查询来执行此操作:
alter table `test`.`english` convert to character set utf8 collate utf8_unicode_ci;
答案 1 :(得分:0)
将表格排名更改为utf8_bin
。
更改表的默认字符集和排序规则,包括现有列的表(注意convert to子句):
ALTER TABLE tableName CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin
utf8_general_ci
中的
ä = a
ö = o
ü = u
但在utf8_bin
ä != a
ö != o
ü != u
答案 2 :(得分:0)
保留ut8_unicode_ci并将其添加到您的php代码中:
mb_language('uni');
mb_internal_encoding('UTF-8');
mysql_query("set names 'utf8'",$connection);
我到处使用它(西里尔文,中文等),它适用于每个查询(插入或更新)。
<?php
header("Content-Type: text/html;charset=UTF-8", true);
$connection = mysql_connect("localhost", "test", "test") or die(mysql_error());
mb_language('uni');
mb_internal_encoding('UTF-8');
mysql_query("set names 'utf8'",$connection);
mysql_select_db("test") or die(mysql_error());
mysql_query("UPDATE `test`.`english` SET age = '".$age."', city = '".mysql_real_escape_string($_REQUEST['city'])."', aboutMe = '".$_REQUEST['about']."' WHERE `english`.`username` = '".$_REQUEST['username']."' LIMIT 1 ;")
or die(mysql_error());
答案 3 :(得分:0)
我得到了它的工作。我没有解释这种行为。 我已将php文件从utf8更改为latin1:
mysql_query("SET NAMES 'latin1'");
mysql_query("SET CHARACTER SET latin1");
mysql_query("SET COLLATION_CONNECTION = 'latin1_general_ci'");
在MySQL数据库中,表和列的排序规则为utf8_unicode_ci。
现在可以使用€符号旁边的所有字符。