Csharp/C#教程:如何修复空格的UTF编码?分享


如何修复空格的UTF编码?

在我的C#代码中,我从PDF文档中提取文本。 当我这样做时,我得到一个UTF-8或Unicode编码的字符串(我不确定哪个)。 当我使用Encoding.UTF8.GetBytes(src); 要将它转换为字节数组,我注意到空格实际上是两个字符值为194和160的字符。

例如,字符串“CLE action”看起来像

 [67, 76, 69, 194 ,160, 65 ,99, 116, 105, 111, 110] 

在一个字节数组中,空格是194和160 ……并且因为这个src.IndexOf("CLE action"); 当我需要它返回1时返回-1。

如何修复字符串的编码?

194 160NO-BREAK SPACE代码点的UTF-8编码(与HTML调用的代码点相同)。

所以它真的不是一个空间,即使它看起来像一个。 (例如,你会看到它不会自动换行。) s正则表达式匹配会匹配它,但是与空格的简单比较不会。

要简单地替换NO-BREAK空间,您可以执行以下操作:

 src = src.Replace('u00A0', ' '); 

在UTF8中,字符值c2 a0(194 160)被定义为NO-BREAK SPACE。 根据ISO / IEC 8859,这是一个不允许插入断线的空间。 通常,文本处理软件假定可以在任何空格字符处插入换行符(这是正常实现自动换行的方式)。 您应该能够简单地用正常空格替换字符串中的替换来解决问题。

xC2xA0 (= xC2xA0 )解释为UTF8实际上会产生xA0 ,这是unicode 非中断空格 。 这是与普通空间不同的字符,因此与普通空间不匹配。 您必须匹配不间断空格或对任何空格使用模糊匹配。

上述就是C#学习教程:如何修复空格的UTF编码?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1034998.html

(0)
上一篇 2022年1月19日
下一篇 2022年1月19日

精彩推荐