解码引用打印消息消息

2023-09-06 18:37:36 作者:独衬心酸

荫遇到麻烦的日本消息进行解​​码,最终输出似乎是一个垃圾的价值。

恩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・ア・・・ノ・ソ・ヘ 06 vs2013 .dll文件的创建和引用 动态链接库 编码,解码,释放空间函数动态库创建

任何想法来解决这个问题?

解决方案

试试这个

  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");