当前位置: 首页 > 面试题库 >

mySQL表中的重音字符

艾璞瑜
2023-03-14
问题内容

我有一些法语文本(包含带重音符号,例如“é”),存储在一个排序规则为utf8_unicode_ci(表和列)的MySQL表中,我希望在HTML5页面上输出该文本。

HTML页面字符集为UTF-8( ),PHP文件本身被编码为“ UTF-8 without
BOM”(我在Windows上使用Notepad ++)。我使用PHP5请求数据库并生成HTML。

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

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

我在这里想念什么?

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


问题答案:

我以前遇到过同样的问题,下面是我做的

1)使用notepad ++(几乎可以适应任何编码)或Eclipse,并确保将其 保存或在没有BOM的UTF-8中打开

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

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)使用中继标记 <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字体将其包含在CSS中

10)不要以 ?>

注意:

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



 类似资料:
  • 我有一些法语文本(包含重音字符,如 "é"), 存储在MySQL表中,其排序utf8_unicode_ci(表和列),我想在HTML5页面上输出。 超文本标记语言页面字符集为UTF-8( 但是,在输出页面上,特殊字符(如“é”)显示为乱码,并替换为“�". 当我浏览数据库时(通过phpMyAdmin),这些重音字符显示得很好。 我错过了什么? (注意:将页面编码(通过火狐的“网络开发者”菜单)更改

  • 问题内容: 我有一个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中,它比其他语言/平台要难一些。 这是我的原始版本,直到我想添加变音符号支持: 目前,我正在讨论增加