c# - 从 C# 字符串中删除不属于特定代码页的字符

标签 c# string codepages

在 C# 中,我有一个字符串,该字符串将使用代码页 37 US 插入到数据库表中。例如,“€”将导致插入操作失败。

什么是清理代码页 37 中未表示的字符串并可能用某些默认字符替换这些字符的好方法?

最佳答案

类似这样的吗?

        var euroString = "abc?€./*";
        var encoding37 = System.Text.Encoding.GetEncoding(
            37, 
            new EncoderReplacementFallback("_"), //replacement char
            new DecoderExceptionFallback());
        var byteArrayWithFallbackChars = encoding37.GetBytes(euroString);
        var utfStringFromBytesWithFallback = new string(encoding37.GetChars(byteArrayWithFallbackChars));
        //returns "abc?_./*"

P.S.:您可以只使用 GetEncoding(37),但在这种情况下替换字符是 ? 我认为这对于数据库来说不太好:)

关于c# - 从 C# 字符串中删除不属于特定代码页的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002072/

相关文章:

java - 使用 string.split() 时的前导空格

visual-c++ - 如何更改 MS Visual Studio 2008 用于打开文件的代码页?

java - 如何从 Java 中的 stringbuilder 对象创建一个 utf8 文件

c# - NLog:NLog 配置在哪里?

c# - 排除子元素

java - 增加字符串的最后一个字母

java - 用唯一替换替换字符串中的所有实例

ruby - Notepad++ 只是调用 "ANSI"的编码,有谁知道在 Ruby 中如何调用它?

c# - 用于将来在当前线程上执行代码的 PostMessage 的 C# 等效项是什么?

c# - COleDispatchDriver 错误 : automation return value coercion failed, DISP_E_TYPEMISMATCH ($80020005)