什么是合适的文本编码?

时间:2011-02-24 17:30:47

标签: xml encoding utf-8 character-encoding

我的客户端和服务器之间的通信是UTF-8中的XML。然而,最近我在数据库中发现了一个非UTF-8字符 - 整个数据库中只有一个字符。显然它需要保存。

但是,我不想将客户端和服务器之间的所有消息都更改为UTF-16,因为它们的大小会突然加倍,仅用于一个迷路的unicode字符。

我可以使用更高效的文本编码吗?也许仍然会将大多数ASCII字符传输为8位,但是仍然允许以某种方式发送非UTF-8字符?

5 个答案:

答案 0 :(得分:3)

不要混淆UTF-8和ASCII。 UTF-8 Unicode编码。如果你真的支持UTF-8,那么这个Unicode字符不会引起任何问题。

如果您错误地说您支持UTF-8,而实际上您只支持ASCII,那么您的目标应该是支持UTF-8。

答案 1 :(得分:3)

  

是否更有效率   文字编码我可以使用?也许一个   这将传输大多数ASCII   字符仍为8位?

这是完全 utf-8是什么。

答案 2 :(得分:1)

我认为你应该试着理解为什么“这个角色需要保留”。

您的数据库的编码是什么?如果它是UTF-8,那么它可能只包含UTF-8字符。

您是否以<>的编码存储字符的UTF-8二进制表示形式?到utf-8?

你应该坚持使用utf-8并更全面地了解你的编码链。

答案 3 :(得分:0)

UTF-8已经支持完整的Unicode目录,它可能是以Unicode格式存储西方语言的最有效编码。您发现的错误不是由于字符不受支持:这是由于字符无效(即编码错误)。

虽然理论上要求XML不包含任何错误,但拒绝完整数据几乎不是一种选择,因为那里的供应商可能并不关心数据的有效性。我的建议是记录无效字符,静默丢弃它们,然后警告供应商。

答案 4 :(得分:0)

没有非UTF-8字符。 UTF-8可以编码每个字符,即Unicode中的每个字符。确实,有八位字节序列不是任何字符的UTF-8编码;但那是相当不同的。我怀疑你收到一条错误消息,指出传入的八位字节流无法解码为UTF-8。当发件人对iso-8859-1中的数据进行编码并且收件人希望以UTF-8编码时,就会发生这种情况。