php – 不能在mysql上插入utf8字符(使用utf8 collat​​ion,charset和nameset)

我在这里遇到一个非常紧张的问题..我有UTF-8中的所有内容,我的所有数据库和表都是utf8_general_ci但是当我尝试从单个PHP脚本插入或更新时,我看到的都是符号..但如果我在phpmyadmin编辑单词显示正确..我发现如果我在php中运行utf8_decode()函数到我的字符串我可以使它工作,但我不打算这样做,因为是一个烂摊子它应该工作而不这样做:S

这是我用来测试这个的基本代码:

<?php
$conn=mysql_connect("localhost","root","root") 
  or die("Error");
mysql_select_db("mydb",$conn) or
  die("Error");
mysql_query("UPDATE `mydb`.`Clients` SET `name` = '".utf8_decode("Araña")."' WHERE `Clients`.`id` =25;", 
   $conn) or die(mysql_error());
mysql_close($conn);
echo "Success.";
?>

如果我不使用php utf8_decode函数解码utf8,这就是我得到的:

而不是Araña,我得到:Araña

解决方法:

我多次遇到同样的问题.有时这是因为我选择的数据库链接类型与我用于插入的类型不同,有时则是从文件数据到数据库.

对于后面的例子,mysql_set_charset(‘utf8’,$link);是一个神奇的答案.

在通过mysql_select_db选择数据库之后立即调用mysql_set_charset.

@ref http://php.net/manual/en/function.mysql-set-charset.php

上一篇:JavaScript数据结构,队列和栈


下一篇:jdbc+jsp简单留言 jdbc+mysql+jsp留言板 java留言板 jdbc留言板 jsp留言板 java留言簿 java期末作业 留言板期末作业