gpt4 book ai didi

c# - 如何在 c# 中将字符串从 utf8 转换(音译)为 ASCII(单字节)?

转载 作者:可可西里 更新时间:2023-11-01 08:30:37 24 4
gpt4 key购买 nike

我有一个字符串对象

“有多个字符甚至特殊字符”

我正在尝试使用

UTF8Encoding utf8 = new UTF8Encoding();
ASCIIEncoding ascii = new ASCIIEncoding();

对象,以便将该字符串转换为 ascii。我可以请某人为这个简单的任务带来一些启发,那就是我的下午。

编辑 1:我们正在努力完成的是摆脱特殊字符,如一些特殊的 Windows 撇号。我在下面作为答案发布的代码不会解决这个问题。基本上

O'Brian will become O?Brian. where ' is one of the special apostrophes

最佳答案

这是对你的另一个问题的回应,看起来它已被删除......重点仍然存在。

看起来像 classic Unicode to ASCII issue .诀窍是找到它发生的位置

.NET 可以很好地处理 Unicode,假设 it's told it's Unicode开始(或保留默认值)。

猜测是您的接收应用无法处理它。所以,我可能会使用 ASCIIEncoder with一个EncoderReplacementFallback与 String.Empty:

using System.Text;

string inputString = GetInput();
var encoder = ASCIIEncoding.GetEncoder();
encoder.Fallback = new EncoderReplacementFallback(string.Empty);

byte[] bAsciiString = encoder.GetBytes(inputString);

// Do something with bytes...
// can write to a file as is
File.WriteAllBytes(FILE_NAME, bAsciiString);
// or turn back into a "clean" string
string cleanString = ASCIIEncoding.GetString(bAsciiString);
// since the offending bytes have been removed, can use default encoding as well
Assert.AreEqual(cleanString, Default.GetString(bAsciiString));

当然,在过去,我们只是循环并删除所有字符 greater than 127 ......好吧,至少我们这些在美国的人。 ;)

关于c# - 如何在 c# 中将字符串从 utf8 转换(音译)为 ASCII(单字节)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com