gpt4 book ai didi

.net - .NET 中的智能 UTF-8 到 UTF-7

转载 作者:行者123 更新时间:2023-12-01 12:01:14 26 4
gpt4 key购买 nike

如果我有一串 UTF-8 字符,并且需要将它们作为 UTF-7 输出到旧系统,我有两个与此相关的问题。

  1. 如何有效地将具有 UTF-8 字符的字符串 s 转换为没有这些字符的相同字符串?

  2. 是否有任何简单的方法可以将扩展字符(如“Ō”)转换为最接近的非扩展等效字符“O”?

最佳答案

如果旧系统实际上可以正确处理 UTF-7,你为什么要删除任何东西?只需将字符串编码为 UTF-7:

string text = LoadFromWherever(Encoding.UTF8);
byte[] utf7 = Encoding.UTF7.GetBytes(text);

然后将 UTF-7 编码的文本发送到旧系统。

如果您有原始的 UTF-8 编码字节,您可以一步完成:

byte[] utf7 = Encoding.Convert(Encoding.UTF8, Encoding.UTF7, utf8);

如果您确实需要转换为 ASCII,您可以很容易地做到这一点。

要删除非 ASCII 字符:

var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(text);

将非 ASCII 转换为最接近的等价物:

string normalized = text.Normalize(NormalizationForm.FormKD);
var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(normalized);

关于.net - .NET 中的智能 UTF-8 到 UTF-7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com