如果我有一个字符串的UTF-8字符,他们需要输出到一个较旧的系统,如UTF-7,我有两个问题与此有关。
如果没有efficiently?
。
发布于 2009-07-30 20:58:35
如果旧的系统能够正确地处理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);https://stackoverflow.com/questions/1209309
复制相似问题