当前位置: 首页 > 知识库问答 >
问题:

mySQL表中的重音字符

沙柏
2023-03-14

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

超文本标记语言页面字符集为UTF-8(

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

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

我错过了什么?

(注意:将页面编码(通过火狐的“网络开发者”菜单)更改为ISO-8859-1解决了这个问题...除了直接出现在PHP文件中的特殊字符,这些字符现在已经损坏了。但是无论如何,我宁愿理解为什么它不能作为UTF-8工作,也不愿在不理解它为什么工作的情况下改变编码。^^;)

共有3个答案

慕高阳
2023-03-14

如果您的php.inidefault_charset未设置为UTF-8,则需要使用Content-type来定义数据。在文件顶部应用以下标头:

header("Content-type: text/html; charset=utf-8");

如果您仍有编码问题,原因可能是以下原因之一:

  • 数据库服务器字符集问题(请检查服务器的编码)
丁阎宝
2023-03-14

这对我管用

  1. 使您的数据库utf8\u常规\u ci

工作完美。

华福
2023-03-14

我以前也遇到过同样的问题,我所做的如下

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

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

3)删除PHP文件开始和结束时的任何额外空格。

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

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

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

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

6) 使用元标记

7)使用某种语言代码进行法语

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

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

我会更新更多,因为我以前解决这个问题真的很困难,因为我在过去的项目中处理的是日语角色

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

10)不要以结束你的PHP源文件?

注:

但是,如果我上面说的一切都不起作用,请尝试根据您真正想要显示的字符集调整您的编码。对于我来说,我将所有内容都设置为SHIFT-JIS,以显示我的所有日语字符,它确实可以正常工作。但是使用UFT-8必须是你的首要任务

 类似资料:
  • 问题内容: 我有一些法语文本(包含带重音符号,例如“é”),存储在一个排序规则为utf8_unicode_ci(表和列)的MySQL表中,我希望在HTML5页面上输出该文本。 HTML页面字符集为UTF-8( ),PHP文件本身被编码为“ UTF-8 without BOM”(我在Windows上使用Notepad ++)。我使用PHP5请求数据库并生成HTML。 但是,在输出页面上,特殊字符(例

  • 问题内容: 我有一个webapp,它在MySQL数据库中存储法语文本(可能包含重音字符)。通过PHP直接检索数据时,带重音的字符变得乱码。例如: 因此,我使用(或)将字符串转换为html实体,一切都很好。但是,当我输出包含重音字符和HTML元素的数据时,事情变得更加复杂。例如,被转换为浏览器,因此浏览器无法理解。 如何同时正确显示重音字符和正确解析HTML? 谢谢! 问题答案: 也许你可以看看和

  • 问题内容: 我正在尝试查找带有重音符号的数据。我已经试过了: 而且有效。它查找XML数据字段包含where的所有记录。问题在于它仅将大写字母E与重音符匹配。我试图编写一个更通用的查询,以使用对等类查找带有重音元音(a,e,i,o,u,大写和小写以及任何重音)的所有数据。我想要一个正则表达式 仅 匹配重音元音,但是我不确定如何获取它,因为等价类(例如匹配 所有 e的(带或不带有重音))都可以。 另外

  • 我必须编写一个小程序来删除作为输入的字符串中的重音。我还必须创建一个函数,将每个带重音的字符替换为相应的不带重音的字符,我有一个循环,为main中的每个字符调用该函数: 问题是,如果我在main中提供字符串“é”作为输入,则该字符串被视为大小为2的字符串(参见下面的示例),并且上面的函数被调用两次而不是一次。此外,作为函数输入的char不是正确的。我想我在函数中遇到了相同的大小问题。这个重音不应该

  • 我已经研究了堆栈溢出(替换字符...呃,JavaScript如何不遵循有关RegExp的Unicode标准等等),但还没有找到这个问题的具体答案: 目前,我正在讨论三种添加支持的方法中的一种,所有这些方法我都进行了测试和工作(至少在某种程度上,我不知道第二种方法的“范围”是什么)。它们在这里: 这将使姓/名与中支持的任何重音字符正确匹配。 这与任何东西都是匹配的,至少以的形式是这样的。好吧,我想.

  • 问题内容: 我已经研究了StackOverflow替换字符。eh,JavaScript如何不遵循有关RegExp的Unicode标准等),还没有真正找到问题的具体答案: 我正在强制UI中的字段匹配以下格式:( 最后一个[逗号空间]首先) ,并且我想提供对变音符号的支持,但是显然在JavaScript中,它比其他语言/平台要难一些。 这是我的原始版本,直到我想添加变音符号支持: 目前,我正在讨论增加