时间戳转换器

带有重音符号的 XML 字符编码问题

日期:2023-02-24     浏览:121    
【中文标题】带有重音符号的 XML 字符编码问题【英文标题】:XML charactor encoding issues with accents 【发布时间】:2011-09-26 17:07:57 【问题描述】:

我现在在处理项目时遇到过几次问题,我想知道是否有一个优雅的解决方案。

问题 我正在通过 XML 从 twitter 中提取推文并将它们上传到我的数据库,但是当我将它们输出到屏幕时,我得到了这些字符:

“搬到杜塞尔多夫。â��” 要么 坦比安

如果我有俄语字符,那么我会得到很多丑陋的盒子。

我想要的是在一种编码下显示正确的本地口音。我认为使用 UTF-8 是可能的。

我正在使用什么

PHP、MYSQL

读入 XML 文件后,我将执行以下操作来清理数据:

    $data = trim($data);
    $data = htmlentities($data);
    $data = mysql_real_escape_string($data);

我的数据库排序规则是:utf8_general_ci

网页字符集为:charset=UTF-8

我认为这可能与 HTML 实体有关,但我真的很欣赏一个在项目中全面运作的解决方案。

提前致谢。

【问题讨论】:

【参考方案1】:

您需要将连接的编码更改为 UTF-8(通常为 iso-8859-1)。见这里:How can I store the '€' symbol in MySQL using PHP?

如果编码正确,则无需调用htmlentities()。我会完全删除它。在 HTML 上下文中输出数据时,您只需要小心使用htmlspecialchars()。

【讨论】:

【参考方案2】:

替换这一行:

$data = htmlentities($data);

有了这个:

$data = htmlentities($data, null, "UTF-8");

这样,htmlentities() 将单独保留有效的 UTF-8 字符。如需更多信息,请参阅the documentation for htmlentities()。

【讨论】:

【参考方案3】:

确保您使用iconv_set_encoding 将您的php 内部编码设置为UTF8,并且您使用EdoDodo 所说的编码信息调用htmlentities。还要确保您是使用 UTF8 编码的数据库存储,尽管您说情况已经如此。

【讨论】:

【参考方案4】:

您不能将htmlentities() 的默认状态用于 XML 数据,因为此函数生成 HTML 实体,而不是 XML 实体。

不同之处在于 HTML DTD 定义了一组实体代码,Web 浏览器被编程来解释这些代码。但是大多数 XML DTD 没有定义它们(如果 XML 甚至有一个 DTD)。

默认情况下可用于 XML 的唯一实体代码是 >、< 和 &。所有其他实体都需要使用它们的数字实体来呈现。

PHP 没有xmlentities() 函数,但是如果您阅读the manual page for htmlentities(),您会在cmets 中看到很多人都遇到过同样的问题并发布了他们的解决方案。快速浏览后,我建议查看名为 philsXMLClean() 的那个。

希望对您有所帮助。

【讨论】:

相关文章

Freemarker 编码 - 用问号代替重音字符

{】Freemarker编码-用问号代替重音字符【英文标题】:Freemarkerencoding-questionmarksintheplaceofaccentedcharacters【发布时间】:2012-03-2212:17:44【问题描述】:我正在尝试使用Freemarker打印重音字符,但在重音字符的位置,我只得到问号。我已...}

带有重音字符的 Java 属性文件

{】带有重音字符的Java属性文件【英文标题】:JavaPropertiesFilewithaccentedcharacters【发布时间】:2015-02-0610:33:59【问题描述】:我正在尝试从文本文件加载属性,但重音字符(saül)采用不同于UTF-8的编码,如何避免?我的属性文件有一...}

如何更正文件的字符编码?

{...一个ANSI编码的文本文件,它不应该被编码为ANSI,因为有重音符号ANSI不支持的字符。我宁愿使用UTF-8。数据能正确解码还是在转码中丢失?我可以使用哪些工具?这是我所拥有的示例:çé我可以从上下文中看出(café应该是caf...}

带重音符号的 QProcess 输入字符串

{...2021-02-0813:08:36【问题描述】:我有两个程序,每个程序都带有QProcess,并且我对带有重音字符的QProcess输入有不同的行为(更准确地说,我创建了一个Qprocess来执行doscopy命令,并且路径带有重音)。执行和开发环境为Windows10。第...}

PHP:simplexml_load_file 从使用 UTF-8 编码的 XML 文件中获取奇怪的字符

{...:42:53【问题描述】:simplexml_load_file()函数不能很好地解析重音字符。该文件是UTF-8编码的,xml标签的encod}

使用 .NET 如何将包含 Latin-1 重音字符的 ISO 8859-1 编码文本文件转换为 UTF-8

{】使用.NET如何将包含Latin-1重音字符的ISO8859-1编码文本文件转换为UTF-8【英文标题】:Using.NEThowtoconvertISO8859-1encodedtextfilesthatcontainLatin-1accentedcharacterstoUTF-8【发布时间】:2011-02-0510:19:22【问题描述】:我收到了以ISO88591-1格式保存...}

编码特殊字符以传入url并由javascript读取[重复]

{...它们可以包含特殊字符,例如"、西班牙语Ñ或ñ、:空格和重音符号。在添加到url之前对它们进行编码的正确方法是什么,或者如果我像这样进入html}

pandas to_csv:ascii 无法编码字符

{...一些字符是非罗马字母(`、ç、ñ等)。但是当我尝试将重音符号写为ASCII时它会中断。df=pd.read_csv(\'filename.txt\',sep=\'|\',encoding=\}

Python Unicode 编码错误序数不在范围<128> 中,带有欧元符号

{】PythonUnicode编码错误序数不在范围<128>中,带有欧元符号【英文标题】:PythonUnicodeEncodeErrorordinalnotinrange<128>withEuroSign【发布时间】:2013-02-2016:11:28【问题描述】:我必须在Python中读取一个XML文件并获取各种东西,然后...}

带有重音符号的Python转储json [重复]

{】带有重音符号的Python转储json[重复]【英文标题】:Pythondumpjsonwithaccents[duplicate]【发布时间】:2014-11-1116:40:07【问题描述】:如何打印带有“à”或“ç”等特殊字符的json?我可以这样打印:importjsonweird_dict="person":"ç","á":\'à\',"...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号