在MySQL数据库中保存重音符号

Ebp*_*bpo 25 php mysql diacritics character-encoding


我正在尝试在我的数据库中保存法语口音,但它们不会像在DB中那样保存.
例如,"é"保存为"Ã".
我试图将我的文件设置为"Unicode(utf-8)",DB中的字段是"utf8_general_ci"以及DB本身.
当我查看通过AJAX与Firebug发布的数据时,我看到重音通过了"é",所以这是正确的.

谢谢,让我知道您需要更多信息!

小智 52

我个人通过添加MySQL连接代码后解决了同样的问题:

mysql_set_charset("utf8");
Run Code Online (Sandbox Code Playgroud)

或者对于mysqli:

mysqli_set_charset($conn, "utf8");
Run Code Online (Sandbox Code Playgroud)

或mysqli OOP等价物:

$conn->set_charset("utf8");
Run Code Online (Sandbox Code Playgroud)

有时您必须通过添加以下代码来定义主要的php charset:

mb_internal_encoding('UTF-8');
Run Code Online (Sandbox Code Playgroud)

在客户端HTML端,您必须添加以下标头数据:

<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

为了使用JSON AJAX结果(例如使用jQuery),您应该通过添加以下内容来定义标头:

header("Content-type: application/json;charset=utf8");
json_encode(
     some_data
);
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题

  • 只是注释,函数`mysqli_set_charset("utf8")`需要两个参数,连接和字符集,所以它的结尾像`mysqli_set_charset($ conn,"utf8")`. (4认同)
  • 并且,如果您将使用`PDO`,请尝试:`$ db = new PDO("database","username","pass",array(PDO :: MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8')) (3认同)

Pek*_*ica 6

最好的办法是您的数据库连接不是UTF-8编码 - 默认情况下通常是ISO-8859-1.

尝试发送查询

SET NAMES utf8;
Run Code Online (Sandbox Code Playgroud)

在建立连接后.


小智 5

mysqli_set_charset($conn, "utf8");
Run Code Online (Sandbox Code Playgroud)