从不属于特定代码页的C#字符串中删除字符
在C#中,我有一个字符串,它将使用代码页37 US插入到db表中。例如,“€”将导致插入操作失败 有什么好方法可以清除代码页37中未显示的字符串,并可能用一些默认字符替换这些字符?类似的内容从不属于特定代码页的C#字符串中删除字符,c#,string,codepages,C#,String,Codepages,在C#中,我有一个字符串,它将使用代码页37 US插入到db表中。例如,“€”将导致插入操作失败 有什么好方法可以清除代码页37中未显示的字符串,并可能用一些默认字符替换这些字符?类似的内容 var euroString = "abc?€./*"; var encoding37 = System.Text.Encoding.GetEncoding( 37, new EncoderReplacementFallbac
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?_./*"
注意:您可以只使用
GetEncoding(37)
,但在这种情况下,替换字符是?
,我认为这对DB:)来说并不太合适。这里有一个正则表达式,用于将输入限制在允许的字符范围内:
const string Allowed = @"1-9\."; //Add allowed chars here
string cleanStr = Regex.Replace("£1.11", "[^" + Allowed + "]", "");