数据库
首页 > 数据库> > php – mySQL表中的重音字符

php – mySQL表中的重音字符

作者:互联网

我有一些法语文本(包含重音字符,如“é”),存储在一个MySQL表中,其排序规则为utf8_unicode_ci(包括表和列),我想在HTML5页面上输出.

HTML页面字符集是UTF-8(< meta charset =“utf-8”/>),PHP文件本身编码为“没有BOM的UTF-8”(我在Windows上使用记事本).我使用PHP5来请求数据库并生成HTML.

但是,在输出页面上,特殊字符(例如“é”)显示为乱码并被“ ”替换.

当我浏览数据库(通过phpMyAdmin)时,那些相同的重音字符显示就好了.

我在这里错过了什么?

(注意:将页面编码(通过Firefox的“web开发人员”菜单)更改为ISO-8859-1解决了问题…除了直接出现在PHP文件中的特殊字符,现在已经损坏了.但无论如何,我我宁愿理解为什么它不能像UTF-8一样工作而不是改变编码而不理解它的工作原理.^^;)

解决方法:

我之前遇到过同样的问题,我做的是以下内容

1)使用记事本(几乎可以适应任何编码)或eclipse,并确保在没有BOM的情况下以UTF-8保存或打开它.

2)使用header(‘Content-type:text / html; charset = UTF-8’)在PHP头中设置编码;

3)删除PHP文件开头和结尾的任何额外空格.

4)通过PhpMyAdmin或任何mySQL客户端将我的所有表和列编码设置为utf8mb4_general_ci或utf8mb4_unicode_ci.两种编码的比较可用here

5)将mysql连接字符集设置为UTF-8(我使用PDO进行数据库连接)

  PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8"

或者只是在获取任何数据之前执行SQL查询

6)使用元标记< meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”/>

7)为法语使用某种语言代码
< meta http-equiv =“Content-language”content =“fr”/>

8)将html元素lang属性更改为所需的语言

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

并且会更新这个因为我之前很难解决这个问题,因为我在过去的项目中处理日文字符

9)客户端PC中没有某些字体,您需要使用Google fonts将其包含在CSS中

10)不要用?>结束PHP源文件?

注意:

但是如果我上面说的所有内容都不起作用,请尝试根据你想要显示的字符集来调整你的编码,对我来说,我把所有内容设置为SHIFT-JIS来显示我所有的日文字符,它确实很好用.但使用UFT-8必须是您的首要任务

标签:non-ascii-characters,php,mysql,unicode,utf-8
来源: https://codeday.me/bug/20190926/1817875.html