在我的 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 160
是 NO-BREAK SPACE
代码点的 UTF-8 编码(与 HTML 调用
的代码点相同)。
所以它真的不是一个空间,尽管它看起来像一个空间。 (例如,您会发现它不会自动换行。)\s
的正则表达式匹配会匹配它,但与空格的简单比较不会。
要简单地替换 NO-BREAK 空格,您可以执行以下操作:
src = src.Replace('\u00A0', ' ');
关于c# - 如何修复空格的 UTF 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992934/