荫遇到麻烦的日本消息进行解码,最终输出似乎是一个垃圾的价值。
恩codeD ISO-2022-JP引用Printable消息:
"=82=B1=82=EA=82=CD=92P=82=C8=82=E9=83e=83X=83g=82=C5=82=B7=82=DD=82=C8=82=B3=\r\n=82=F1=81A=82=B1 = 82 = F1 = 82 = C9 = 82 = BF = 82 = CD
code解码引用Printable:
私有静态字符串德code(字符串输入,字符串bodycharset)
{
变种I = 0;
无功输出=新的名单,其中,字节>();
而(I< input.Length)
{
如果(输入[I] =='='和;&放大器;输入[I + 1] =='\ r'和;&放大器;输入[I + 2] =='\ N')
{
//跳跃
I + = 3;
}
否则,如果(输入[I] =='=')
{
串sHex =输入;
sHex = sHex.Substring第(i + 1,2);
INT(十六进制)= Convert.ToInt32(sHex,16);
字节B = Convert.ToByte(十六进制);
output.Add(B);
I + = 3;
}
其他
{
output.Add((字节)输入[I]);
我++;
}
}
如果(String.IsNullOrEmpty(bodycharset))
返回Encoding.UTF8.GetString(output.ToArray());
其他
返回Encoding.GetEncoding(bodycharset).GetString(output.ToArray());
}
最终输出
・ア・・・ヘ・P・ネ・・・e・X・g・ナ・キ・ン・ネ・ウ・・・A・ア・・・ノ・ソ・ヘ
任何想法来解决这个问题?
解决方案试试这个
VAR海峡=德code(INP,SHIFT_JIS);
或
VAR海峡=德code(INP,SJIS);
Iam having trouble decoding Japanese message, the final output seems to be a garbage value.
Encoded ISO-2022-JP Quoted Printable Message:
"=82=B1=82=EA=82=CD=92P=82=C8=82=E9=83e=83X=83g=82=C5=82=B7=82=DD=82=C8=82=B3=\r\n=82=F1=81A=82=B1 =82=F1=82=C9=82=BF=82=CD"
Code for decoding Quoted Printable:
private static string Decode(string input, string bodycharset)
{
var i = 0;
var output = new List<byte>();
while (i < input.Length)
{
if (input[i] == '=' && input[i + 1] == '\r' && input[i + 2] == '\n')
{
//Skip
i += 3;
}
else if (input[i] == '=')
{
string sHex = input;
sHex = sHex.Substring(i + 1, 2);
int hex = Convert.ToInt32(sHex, 16);
byte b = Convert.ToByte(hex);
output.Add(b);
i += 3;
}
else
{
output.Add((byte)input[i]);
i++;
}
}
if (String.IsNullOrEmpty(bodycharset))
return Encoding.UTF8.GetString(output.ToArray());
else
return Encoding.GetEncoding(bodycharset).GetString(output.ToArray());
}
Final Output:
・ア・・・ヘ・P・ネ・・・e・X・g・ナ・キ・ン・ネ・ウ・・・A・ア・・・ノ・ソ・ヘ
Any ideas to resolve it?.
解决方案try this
var str = Decode(inp, "Shift_JIS");
or
var str = Decode(inp, "sjis");