【发布时间】:2021-03-29 01:01:46
【问题描述】:
我正在尝试从从文本文件中读取的字符串中去除非 ASCII 字符,但无法这样做。我检查了一些来自 SO 和其他网站的帖子的建议,但均无济于事。
这是我所拥有的,也是我尝试过的:
文本文件中的字符串:
2021-03-26 10:00:16:648|2021-03-26 10:00:14:682|MPE->IDC|[10.20.30.40:41148]|203, ? ?'F?~?^?W?|?8wL?i??{?=kb ? Y R?
从文件中读取的字符串:
"2021-03-26 10:00:16:648|2021-03-26 10:00:14:682|[10.20.30.40:41148]|203,\u0016\u0003\u0001\0?\u0001\0\0?\u0003\u0001'F?\u001e~\u0018?^?W\u0013?|?8wL\v?i??{?=kb\t?\tY\u0005\0\0R?"
去除非ASCII字符的方法:
Regex reAsciiPattern = new Regex(@"[^\u0000-\u007F]+"); // Non-ASCII characters
sLine = reAsciiPattern.Replace(sLine, ""); // remove non-ASCII chars
Regex reAsciiPattern2 = new Regex(@"[^\x00-\x7F]+"); // Non-ASCII characters
sLine = reAsciiPattern2.Replace(sLine, ""); // remove non-ASCII chars
string asAscii = Encoding.ASCII.GetString(
Encoding.Convert(
Encoding.UTF8,
Encoding.GetEncoding(
Encoding.ASCII.EncodingName,
new EncoderReplacementFallback(string.Empty),
new DecoderExceptionFallback()
),
Encoding.UTF8.GetBytes(sLine)
)
);
我错过了什么?
谢谢。
【问题讨论】:
-
我认为您将 ASCII 与“可打印”混淆了。您拥有的字符是 ascii,只是不可打印。
标签: c# string non-ascii-characters