繁体   English   中英

在 MySQL 数据库中保存口音

[英]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实际使用正确的字符集(可能不是正确的语法,我将不得不查找什么它应该是,但它将沿着那些线)

好的,我为我找到了一个可行的解决方案:

运行此 mysql 命令

show variables like 'char%'; 

这里有很多变量:“character_set_server”、“character_set_system”等。

就我而言,我在数据库中有“é”的“é”,我想在我的网站上显示“é”。

为了工作,我必须将“character_set_server”值从“utf8mb4”更改为“latin1”。

我所有的正确值是:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM