在 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/