沃梦达 / 编程问答 / php问题 / 正文

mySQL 表中的重音字符

Accented characters in mySQL table(mySQL 表中的重音字符)

本文介绍了mySQL 表中的重音字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have some texts in French (containing accented characters such as "é"), stored in a MySQL table whose collation is utf8_unicode_ci (both the table and the columns), that I want to output on an HTML5 page.

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

The HTML page charset is UTF-8 (< meta charset="utf-8" />) and the PHP files themselves are encoded as "UTF-8 without BOM" (I use Notepad++ on Windows). I use PHP5 to request the database and generate the HTML.

但是,在输出页面上,特殊字符(如é")出现乱码,被""代替.

However, on the output page, the special characters (such as "é") appear garbled and are replaced by "�".

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

When I browse the database (via phpMyAdmin) those same accented characters display just fine.

我在这里遗漏了什么?

(注意:将页面编码(通过 Firefox 的Web 开发人员"菜单)更改为 ISO-8859-1 可以解决问题...除了直接出现在 PHP 文件中的特殊字符现在已损坏.但是无论如何,我宁愿了解为什么它不能作为 UTF-8 工作,也不愿在不了解其工作原理的情况下更改编码.^^;)

(Note: changing the page encoding (through Firefox's "web developer" menu) to ISO-8859-1 solves the problem... except for the special characters that appears directly in the PHP files, which become now corrupted. But anyway, I'd rather understand why it doesn't work as UTF-8 than changing the encoding without understanding why it works. ^^;)

推荐答案

我之前也遇到过同样的问题,我做了以下事情

I experienced that same problem before, and what I did are the following

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

1) Use notepad++(can almost adapt on any encoding) or eclipse and be sure in to save or open it in UTF-8 without BOM.

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

2) set the encoding in PHP header, using header('Content-type: text/html; charset=UTF-8');

3) 删除 PHP 文件开头和结尾的所有多余空格.

3) remove any extra spaces on the start and end of my PHP files.

4) 通过 PhpMyAdmin 或您拥有的任何 mySQL 客户端将我所有的表和列编码设置为 utf8mb4_general_ciutf8mb4_unicode_ci.两种编码的比较可在这里

4) set all my table and columns encoding to utf8mb4_general_ci or utf8mb4_unicode_ci via PhpMyAdmin or any mySQL client you have. A comparison of the two encodings are available here

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

5) set mysql connection charset to UTF-8 (I use PDO for my database connection )

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

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

or just execute the SQL queries before fetching any data

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

7) 使用某种语言代码表示法语<meta http-equiv="Content-language" content="fr"/>

7) use a certain language code for French <meta http-equiv="Content-language" content="fr" />

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

8) change the html element lang attribute to the desired language

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

并将对此进行更多更新,因为我之前真的很难解决这个问题,因为我在过去的项目中处理日语字符

and will be updating this more because I really had a hard time solving this problem before because I was dealing with Japanese characters in my past projects

9) 某些字体在客户端 PC 中不可用,您需要使用 Google 字体 来包含它在你的 CSS 上

9) Some fonts are not available in the client PC, you need to use Google fonts to include it on your CSS

10) 不要以 ?>

注意:

但是如果我上面说的一切都不起作用,请尝试根据您真正想要显示的字符集调整您的编码,对我来说,我将所有内容都设置为 SHIFT-JIS 以显示所有我的日语字符,它真的很好用.但是使用 UFT-8 必须是您的优先事项

but if everything I said above doesn't work, try to adjust your encoding depending on the character-set you really want to display, for me I set everything to SHIFT-JIS to display all my japanese characters and it really works fine. But using UFT-8 must be your priority

这篇关于mySQL 表中的重音字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:mySQL 表中的重音字符

基础教程推荐