[英]Save Accents in MySQL Database
我正在尝试将法语口音保存在我的数据库中,但它们并没有像在数据库中那样保存。
例如,“é”被保存为“é”。
我试图将我的文件设置为“Unicode (utf-8)”,数据库中的字段是“utf8_general_ci”以及数据库本身。
当我使用 Firebug 查看通过 AJAX 发布的数据时,我看到重音为“é”,所以它是正确的。
谢谢,让我知道您需要更多信息!
我个人通过添加MySQL连接代码后解决了同样的问题:
mysql_set_charset("utf8");
或者对于mysqli:
mysqli_set_charset($conn, "utf8");
或mysqli OOP等价物:
$conn->set_charset("utf8");
有时您必须通过添加以下代码来定义主要的php charset :
mb_internal_encoding('UTF-8');
在客户端HTML端,您必须添加以下标头数据:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
为了使用JSON AJAX结果(例如使用jQuery),您应该通过添加以下内容来定义标头:
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
这应该可以解决问题
最好的办法是您的数据库连接不是UTF-8编码 - 默认情况下通常是ISO-8859-1。
尝试发送查询
SET NAMES utf8;
在建立连接后。
mysqli_set_charset($ conn,“utf8”);
如果你使用PDO,你必须像那样实现:
new \PDO("mysql:host=$host;dbname=$schema", $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
你有没有看过http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html :
需要使用Unicode与服务器通信的客户端应用程序应相应地设置客户端字符集; 例如,通过发出SET NAMES'utf8'语句。 ucs2不能用作客户端字符集,这意味着它不适用于SET NAMES或SET CHARACTER SET。 (请参见第9.1.4节“连接字符集和排序”。)
除此之外:
如果你从你的mysql-db(一切都是utf-8)通过php获取数据但仍然得到'?' 对于浏览器中的某些特殊字符(),请尝试以下方法:
在mysql_connect()和mysql_select_db()之后添加以下行:mysql_query(“SET NAMES utf8”);
为我工作。 我首先尝试使用utf8_encode,但这只适用于äüöéè......等等,但不适用于kyrillic和其他字符。
使用UTF8:
在你的中设置元
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
当您连接到mySQL数据库时,强制编码,因此您不必使用您的mysql设置
$conn = mysql_connect('server', 'user', 'password') or die('Could not connect to mysql server.');
mysql_select_db('mydb') or die('Could not select database.');
mysql_set_charset('utf8',$conn); //THIS IS THE IMPORTANT PART
如果您使用AJAX,请设置如下编码:
header('Content-type: text/html; charset=utf-8');
PHP(.net)建议在使用SET NAMES utf8之类的查询进行连接后设置字符集,因为在MySQL语句中转义数据的功能可能无法正常工作。
不要使用SET NAMES utf8,而是使用适当的... _ set_charset()函数(或方法),以防您使用PHP。
你需要a)确保你的表使用的字符编码可以编码这些字符(UTF-8往往是最近的编码)和b)确保你的表单提交被发送到数据库中相同的字符编码。 您可以通过将HTML / PHP /任何文件保存为UTF-8,并在头部包含一个告诉浏览器使用UTF-8编码的元标记来完成此操作。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
哦,不要忘记C,当连接到数据库时,确保你通过执行SET NAMES charset = utf8实际使用正确的字符集(可能不是正确的语法,我将不得不查找什么它应该是,但它将沿着那些线)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.