UTF-8不代表它应该的数据

时间:2013-03-06 23:54:09

标签: php mysql database utf-8 character-encoding

我需要在MySQL数据库中插入克罗地亚字符。

我已经做了所有的一切,但是当我想插入一些克罗地亚字符时,我仍然有问题。

到目前为止我做了什么:

  1. 我已经下载并安装了MySQL Server 5.6,希望我能看到克罗地亚的整理,但我找不到它......
  2. 我已将整个数据库和每个列设置为UTF8-default collat​​ion
  3. 我把它放到我的php脚本中:header("Content-Type: text/html;charset=utf-8");
  4. 我尝试了所有组合,例如(设置cp1250上的所有内容,latin2-croatian-ci)仍然没有运气
  5. 数据库中插入的一些输入是:æèæžš,它应该是ćčćžš ..这只是用于测试......

    有没有人知道接下来我能做些什么?我真的希望能解决这类特殊问题。

    我确信当我们谈论MySQL数据库中的克罗地亚字符时,很多人都像我一样撞墙。

    编辑: 插入代码(这仅用于测试,因此简化)

    <?php
    header("Content-Type: text/html;charset=utf-8");
    $con=mysqli_connect("127.0.0.1:3306","root","admin","test");
    
     if (!$con)
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
     $sql="INSERT INTO test(test) VALUES('ćčćžš')";
     if (!mysqli_query($con,$sql))
          {
                die('Error: ' . mysqli_error($con));
          }else 
          {
            print '<script type="text/javascript">alert("ok")</script>';
          }
    
        mysqli_close($con);
    ?>
    

2 个答案:

答案 0 :(得分:3)

对于克罗地亚人来说:

  1. 数据库中的表格必须为utf8_general_ci
  2. 您的文件必须保存为utf8 (without BOM)
  3. 使用PHP连接到数据库后,添加此query('SET NAMES utf8');
  4. 在您的文档中<head>标记添加<meta charset="utf-8" />
  5. 经过测试并且有效(适用于克罗地亚语)。

    Živio

答案 1 :(得分:3)

要正确读取UTF-8字符,您可以像这样创建表格:

create table patient(
/* your columns  */
)character set utf8 collate utf8_unicode_ci;

并通过在php中添加set_charset('utf8')来插入/检索您的数据:

$mysqli=new mysqli($host,$user,$password,$database);
$mysqli->set_charset('utf8');
if(mysqli_connect_errno()){
    echo 'Could not connect to database. Error: '.mysqli_connect_error();
    exit();
}

$query="select * from YOURTABLE";
$result=$mysqli->query($query);

if($result->num_rows>0){
    while($row=$result->fetch_assoc()){
        //reading $row data
    }
    $result->close();
}

$mysqli->close();

并且还记得将你的html字符集设置为UTF-8:

<meta charset="UTF-8">