将字符串从一种编码转换为另一种编码
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
的其他字符,并对其进行了适当的转换。感谢您查看我认为的问题。很有帮助。以上是关于将字符串从一种编码转换为另一种编码的主要内容,如果未能解决你的问题,请参考以下文章