当前位置:  开发笔记 > 编程语言 > 正文

如何将8位字符转换为7位字符?(即Ü到U)

如何解决《如何将8位字符转换为7位字符?(即Ü到U)》经验,为你挑选了6个好方法。

我正在寻找伪代码或示例代码,以将更高位的ascii字符(例如,将其扩展为ascii 154)转换为U(ascii 85).

我最初的猜测是,由于只有大约25个ascii字符与7bit ascii字符类似,因此必须使用翻译数组.

如果您能想到其他任何事情,请告诉我.



1> sinelaw..:

对于.NET用户来说,CodeProject中的文章(感谢GvS的提示)确实比我迄今为止看到的任何其他文章更准确地回答了这个问题.

但是,该文章中的代码(在解决方案#1中)很麻烦.这是一个紧凑的版本:

// Based on http://www.codeproject.com/Articles/13503/Stripping-Accents-from-Latin-Characters-A-Foray-in
private static string LatinToAscii(string inString)
{
    var newStringBuilder = new StringBuilder();
    newStringBuilder.Append(inString.Normalize(NormalizationForm.FormKD)
                                    .Where(x => x < 128)
                                    .ToArray());
    return newStringBuilder.ToString();
}

为了扩展答案,此方法使用String.Normalize,其中:

返回一个新字符串,其文本值与此字符串相同,但其二进制表示形式为指定的Unicode规范化形式.

特别是在这种情况下,我们使用NormalizationForm FormKD,在那些相同的MSDN文档中描述如下:

FormKD - 表示使用完全兼容性分解对Unicode字符串进行规范化.

有关unicode规范化表单的更多信息,请参阅Unicode附录#15.



2> Mark Baker..:

大多数语言都有标准方法用标准ASCII替换重音字符,但这取决于语言,它通常涉及用两个ASCII替换单个重音字符.例如德语ü成为你.因此,如果你想要正确处理自然语言,它会比你想象的要复杂得多.



3> 小智..:

是否真的将Ü转换为U你想做什么?我不知道其他语言,但在德语中Ü会成为Ue,ö会成为oe等.


即便如此简单,如果在全大写单词中使用,则会成为UE

4> vIceBerg..:

我想你不能.

我经常这样做:

AccentString ='ÀÂÄÉÈÈ[和所有其他]'
ConvertString ='AAAEEE [和所有其他]'

在AccentString中查找char并将其替换为ConvertString中的相同索引

HTH



5> 小智..:

在代码页1251中,字符用2个字节编码:一个用于基本字符,一个用于变化.然后,当您以ASCII格式编码时,只保留基本字符.

public string RemoveDiacritics(string text)
{

  return System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(text));

}

来自:http://www.clt-services.com/blog/post/Enlever-les-accents-dans-une-chaine-(proprement).aspx



6> DrYak..:

确实如同未说明的提议:"iconv"函数用于处理所有奇怪的转换,几乎所有编程语言都可用,并且有一个特殊选项,它试图用近似值转换目标集中缺少的字符.

使用iconv只需将输入的UTF-8字符串转换为7位ASCII.

否则,你总是会碰到一个角落的情况:一个8位输入使用不同的代码页和一组不同的字符(因此你的转换表根本不起作用),忘了映射一个最后一个愚蠢的重音字符(你映射了所有的坟墓/急性口音,但忘了映射捷克卡龙或北欧'°')等.

当然,如果您想将解决方案应用于一个小的特定问题(为您的音乐集合制作文件系统友好的文件名),那么查找数组就是最佳选择(对于每个代码编号超过128的数组,由JeeBee提出的128以下的近似值,或vIceBerg提出的源/目标对,取决于您选择的语言中已有的替换函数),因为它很快被黑客攻击并快速检查缺失的元素.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有