将字符串从一种编码转换为另一种编码

Posted

技术标签:

【中文标题】将字符串从一种编码转换为另一种编码【英文标题】:Convert string from one encoding to another 【发布时间】:2011-10-26 05:37:13 【问题描述】:

我生成了一个 xml 文档作为文本文件,声明它应该被编码为UTF-8。当我检查是否符合架构时,它会报告文件中存在非法字符。

An invalid character was found in text content.

可疑字符的一个字节值为0x92

在Visual Basic 中,我使用DOMDocument60 类型的变量dom;并执行以下操作

Set nod = dom.createElement("dc.description")
nod.text = Trim$(Nz(rs!mDescription, ""))

这是错误的来源。我有一种感觉,我需要进行字符集转换才能将可疑字符正确编码为 utf-8。

我的具体问题是:

1) 我的出发点是什么字符集?该字符串来自 access-2010 数据库(备忘录类型)

2) 如何将其转换为UTF-8

我不知道如何做到这一点。我对 VBA 不是很熟悉。

【问题讨论】:

【参考方案1】:

导致你悲伤的字符被称为智能引号或弯引号。它看起来像这样:'

除了您必须在 Access/VBA 中找到一种方法来处理它之外,这个问题实际上与 Access 无关。无论出于何种原因,您的 XML 包含无效的 XML 字符。

我可以想到两种选择。第一个选项是用标准的非智能引号替换字符。这是一些不优雅的代码,可以一次快速替换所有四种不同的可能智能引号:

Replace(Replace(Replace(Replace(MyString, Chr(147), Chr(34)), Chr(148), Chr(34)), Chr(145), Chr(39)), Chr(146), Chr(39))

第二个选项是用适当的 XML/html 字符代码替换有问题的字符,假设您确实需要它们,对于您遇到问题的特定字符,该代码是:

’

您可以考虑对传入的数据运行替换,以便从一开始就使用有效字符存储它。

【讨论】:

感谢 HK1。我使用了你的第二个建议。我还有一些不属于UTF-8 的其他字符,并对其进行了适当的转换。感谢您查看我认为的问题。很有帮助。

以上是关于将字符串从一种编码转换为另一种编码的主要内容,如果未能解决你的问题,请参考以下文章

计算机编码

在java中将日期从一种格式转换为另一种格式[重复]

编码与计算机存储

Qt音视频开发29-ffmpeg中x264/x265编码库支持

python与编码

GET&&POST请求编码过程