当前位置: 首页 > 编程语言 > C#

如何修复空格的UTF编码?分享

时间:2023-04-10 16:36:17 C#

如何修复空格的UTF编码?在我的C#代码中,我从PDF文档中提取文本。当我这样做时,我得到一个UTF-8或Unicode编码的字符串(我不确定是哪个)。当我使用Encoding.UTF8.GetBytes(src);将其转换为字节数组,我注意到空格实际上是两个字符,其值为194和160。例如,字符串“CLEaction”看起来像[67,76,69,194,160,65,99,116,105,111,110]在字节数组中,空格是194和160...,因为这个src.IndexOf("CLEaction");当我需要它返回1时返回-1。如何修复字符串的编码?194160是NO-BREAKSPACE代码点(HTML调用的相同代码点)的UTF-8编码。所以它并不是一个真正的空间,尽管它看起来像一个空间。(例如,您会看到它不自动换行。)s正则表达式匹配将匹配它,但与空格的简单比较不会。要简单地替换NO-BREAK空格,您可以执行以下操作:src=src.Replace('u00A0','');在UTF8中,字符值c2a0(194160)被定义为NO-BREAKSPACE。根据ISO/IEC8859,这是不允许插入断线的空间。通常,文本处理软件假设可以在任何空白字符处插入换行符(这是通常实现换行的方式)。您应该能够简单地用普通空格替换字符串中的替换来解决问题。将xC2xA0(=xC2xA0)解释为UTF8实际上会生成xA0,这是unicode不间断空格。这是一个不同于普通空格的字符,所以它不匹配普通空格。您必须匹配不间断空格或对任何空格使用模糊匹配。以上是C#学习教程:如何修复空格的UTF编码?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: