我正在尝试从表中检索包含值Boris Borenović
的行
而是返回Boris Borenovi?
。
我的MySQL数据库和表都设置了utf8_unicode_ci
个排序规则。
我的PHP页面显示表格中的数据,其中包含以下标题:<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
。我也试过了charset=utf-8
,但它仍然不起作用。
我用来查询表中数据的Sql命令是SELECT * FROM contact
,所以没什么特别的,只是无聊的简单查询。我尝试使用SELECT * FROM contact COLLATE Latin1_General_CI
,但无法执行该查询。
如何让它发挥作用?谢谢。
答案 0 :(得分:1)
以下是答案:can't insert russian text into mysql database 您需要配置MySQL以允许utf-8
答案 1 :(得分:1)
您是否设置了连接排序规则?尝试执行SET NAMES utf8
将所有归类设置为utf-8,然后在执行select语句之前将charset设置为utf-8。
答案 2 :(得分:0)
您的数据库非常好。如果您在数据库本身内部看到?
,则表示数据库表编码错误。
由于您在HTTP响应中看到?
,这意味着没有指示PHP将字符作为UTF-8写入响应。检查此PHP UTF-8 cheatsheet的第3步。
如果您之后看到的是Å¡
而不是š
,那么您需要在utf8
之前使用SELECT
执行mysql_set_charset
答案 3 :(得分:0)
我的方式是:
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET_CLIENT='UTF8'");
在连接数据库后输入此代码
(mysql_select_db($Database);)
答案 4 :(得分:0)
<?php
$mysql_host = "localhost";
$mysql_db = "database";
$mysql_user = "username";
$mysql_pass = "password";
$mysql_character = "latin1";
$mysql_collate = "latin1_bin";
$db = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if(!$db) echo "Cannot connect to the database!";
mysql_select_db($mysql_db);
mysql_query("ALTER DATABASE `".$mysql_db."` DEFAULT CHARACTER SET '".$mysql_character."' COLLATE '".$mysql_collate."'");
$query = mysql_query("SHOW TABLES");
while($row = mysql_fetch_array($query)) {
$table = $row[0];
mysql_query("ALTER TABLE `".$table."` DEFAULT CHARACTER SET '".$mysql_character."' COLLATE '".$mysql_collate."'");
$query2 = mysql_query("SHOW columns FROM `".$table."`");
while($row = mysql_fetch_array($query2)) {
$column = $row[0];
$type = $row[1];
$null = $row[2];
if($null == "YES") $null = "NULL";
if($null == "NO") $null = "NOT NULL";
mysql_query("ALTER TABLE `".$table."` CHANGE COLUMN `".$column."` `".$column."` ".$type." CHARACTER SET '".$mysql_character."' COLLATE '".$mysql_collate."' ".$null);
}
}
?>