c# - .NET:如何判断编码是否支持我的字符串中的所有字符?

标签 c# .net text encoding character-encoding

我有很多文本需要输出,其中包括来自多种语言的各种字符。有时我需要以 Unicode 以外的字符编码(例如,Shift-JIS 或 ISO-8859-2)输出文本,以匹配它要访问的页面。

如果文本包含编码无法处理的字符(例如,ISO-8859-2 编码输出中的日文字符),我最终会在输出中得到奇怪的字符。我可以逃避他们,但我宁愿只有在确实有必要时才这样做。

所以,我的问题是:有没有一种方法可以提前判断编码是否可以处理字符串中的所有字符?

编辑: 我认为 EncoderFallback 可能是我提出的问题的正确答案。不幸的是,它似乎不适用于我的特定情况。我的想法是将字符转换为它们的 HTML 实体等价物(例如,モ 而不是 mo)。但是,编码器只转换它找到的第一个这样的字符,如果我设置 Response.ContentEncoding 它根本不会调用我的 EncoderFallback。

最佳答案

您可以编写自己的 EncoderFallback 类,在编码之前将其分配给编码器。

使用这种方法,您不需要做任何高级操作(这可能只是处理输出字符串以查找问题)。

相反,您的 Fallback 类只需要处理编码没有字符值的替换。

关于c# - .NET:如何判断编码是否支持我的字符串中的所有字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631426/

相关文章:

c# - X509Certificate2 - 如果使用 ECC 证书,则拒绝访问异常

text - XPath无法使用text()定位元素

swift - 如何在字符串中插入双引号?

c# - WPF如何在运行时更新UI

c# - 如何使用c#中的其他参数将值从一个表插入到mysql中的另一个表

.net - Unity IOC Buildup vs Resolve?

c# - Windows 的声音管理器类

java - 二进制到字符串的麻烦

c# - 在 WPF 中的两个窗口之间共享同一对象

.net - SqlCommand.Dispose 是否关闭连接?