字符串编码变音符号

c0ldsun

我想通过webclient发送一个字符串,但是我遇到了德国umlaute的问题。通过Fiddler进行检查,我发现对post参数进行了以下转换:

ä to %E4 (根据在线编码器工具为iso-8859-1)

你知道我能为WP7做到这一点吗?

我已经尝试过了:

  • string urlstring = HttpUtility.UrlEncode("ä");

    结果: %c3%a4

  • string urlstring1 = HttpUtility.HtmlEncode("ä");

    结果: ä

  • Encoding isoenc = Encoding.GetEncoding("ISO-8859-1");
    byte[] utf8characters = Encoding.UTF8.GetBytes("ä");
    byte[] isoArray = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-1"),utf8characters); string finalString = isoenc.GetString(isoArray,0, isoArray.Length);

    结果: ä

我还检查了这个silverlight工具,可以在其中创建自定义编码。

对于这个问题,我真的很疯狂,如果有人有想法,请告诉我。

谢谢,拉尔夫

凯文·高斯(Kevin Gosse)

nwellnhof提供的解决方案很好,但是HttpUtility.UrlEncodeWindows Phone上不提供以编码为参数重载。幸运的是,通过反编译框架程序集,可以很容易地对其进行修改以使用所需的编码:

public class HttpUtilityEx
{
    public static string UrlEncode(string url, Encoding encoding)
    {
        if (url == null)
        {
            return null;
        }
        byte[] bytes = encoding.GetBytes(url);
        int num = 0;
        int num1 = 0;
        int length = (int)bytes.Length;
        for (int i = 0; i < length; i++)
        {
            char chr = (char)bytes[i];
            if (chr == ' ')
            {
                num++;
            }
            else if (!IsSafe(chr))
            {
                num1++;
            }
        }
        if ((num != 0 ? true : num1 != 0))
        {
            byte[] hex = new byte[length + num1 * 2];
            int num2 = 0;
            for (int j = 0; j < length; j++)
            {
                byte num3 = bytes[j];
                char chr1 = (char)num3;
                if (IsSafe(chr1))
                {
                    int num4 = num2;
                    num2 = num4 + 1;
                    hex[num4] = num3;
                }
                else if (chr1 != ' ')
                {
                    int num5 = num2;
                    num2 = num5 + 1;
                    hex[num5] = 37;
                    int num6 = num2;
                    num2 = num6 + 1;
                    hex[num6] = (byte)IntToHex(num3 >> 4 & 15);
                    int num7 = num2;
                    num2 = num7 + 1;
                    hex[num7] = (byte)IntToHex(num3 & 15);
                }
                else
                {
                    int num8 = num2;
                    num2 = num8 + 1;
                    hex[num8] = 43;
                }
            }
            bytes = hex;
        }
        return encoding.GetString(bytes, 0, (int)bytes.Length);
    }

    private static bool IsSafe(char ch)
    {
        if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9')
        {
            return true;
        }
        char chr = ch;
        if (chr != '!')
        {
            switch (chr)
            {
                case '\'':
                case '(':
                case ')':
                case '*':
                case '-':
                case '.':
                    {
                        break;
                    }
                case '+':
                case ',':
                    {
                        return false;
                    }
                default:
                    {
                        if (chr != '\u005F')
                        {
                            return false;
                        }
                        else
                        {
                            break;
                        }
                    }
            }
        }
        return true;
    }

    internal static char IntToHex(int n)
    {
        if (n <= 9)
        {
            return (char)(n + 48);
        }
        return (char)(n - 10 + 97);
    }
}

从那里,您只需要像对HttpUtility那样调用它:

var result = HttpUtilityEx.UrlEncode("ä", Encoding.GetEncoding("ISO-8859-1"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Unity中显示TextMeshPro中编码字符串的变音符号

来自分类Dev

如何从字符串中删除变音符号(变音符)?

来自分类Dev

搜索没有变音符号的字符串值

来自分类Dev

如何从字符串中删除变音符号(重音符号)?

来自分类Dev

在字符串中查找变音符号(规范化字符串)

来自分类Dev

如何从php中的字符串中获取带有变音符号的字符?

来自分类常见问题

如何在Swift中从字符串中删除变音符号?

来自分类Dev

strtr行为怪异-从字符串中删除变音符号

来自分类Dev

在python中处理字符串大小写和变音符号

来自分类Dev

用冲绳和其他夏威夷变音符号修饰文本字符串

来自分类Dev

如何使用like子句和变音符号过滤数据集中的字符串字段?

来自分类Dev

如何检查字符串是否包含变音符并保持变音符

来自分类Dev

编码变音符号的怪异问题

来自分类Dev

编码变音符号的怪异问题

来自分类Dev

API 请求中的变音符号编码

来自分类Dev

如何替换字符串中的变音符?

来自分类Dev

Unicode字符串替换不适用于完整的变音符号阿拉伯文本

来自分类Dev

如何比较两个字符串的大小写和变音符号不敏感?

来自分类Dev

如何比较两个字符串的大小写和变音符号不敏感?

来自分类Dev

在字符串列上连接两个DataFrame,但忽略重音符号/变音符号

来自分类Dev

解码URL中的变音符号(或复合与组合编码)

来自分类Dev

在哪里更改编码以打印变音符号?

来自分类Dev

使用readOGR时对德语变音符号的编码

来自分类Dev

解码URL中的变音符号(或复合与组合编码)

来自分类Dev

带有变音符号的 Jsoup 编码 URL

来自分类Dev

如何在PHP中大写字符串的第一个字母(带有变音符号)?

来自分类Dev

C ++字符串/字符和重音符号

来自分类Dev

C ++字符串/字符和重音符号

来自分类Dev

填充包含重音符号的字符串

Related 相关文章

  1. 1

    在Unity中显示TextMeshPro中编码字符串的变音符号

  2. 2

    如何从字符串中删除变音符号(变音符)?

  3. 3

    搜索没有变音符号的字符串值

  4. 4

    如何从字符串中删除变音符号(重音符号)?

  5. 5

    在字符串中查找变音符号(规范化字符串)

  6. 6

    如何从php中的字符串中获取带有变音符号的字符?

  7. 7

    如何在Swift中从字符串中删除变音符号?

  8. 8

    strtr行为怪异-从字符串中删除变音符号

  9. 9

    在python中处理字符串大小写和变音符号

  10. 10

    用冲绳和其他夏威夷变音符号修饰文本字符串

  11. 11

    如何使用like子句和变音符号过滤数据集中的字符串字段?

  12. 12

    如何检查字符串是否包含变音符并保持变音符

  13. 13

    编码变音符号的怪异问题

  14. 14

    编码变音符号的怪异问题

  15. 15

    API 请求中的变音符号编码

  16. 16

    如何替换字符串中的变音符?

  17. 17

    Unicode字符串替换不适用于完整的变音符号阿拉伯文本

  18. 18

    如何比较两个字符串的大小写和变音符号不敏感?

  19. 19

    如何比较两个字符串的大小写和变音符号不敏感?

  20. 20

    在字符串列上连接两个DataFrame,但忽略重音符号/变音符号

  21. 21

    解码URL中的变音符号(或复合与组合编码)

  22. 22

    在哪里更改编码以打印变音符号?

  23. 23

    使用readOGR时对德语变音符号的编码

  24. 24

    解码URL中的变音符号(或复合与组合编码)

  25. 25

    带有变音符号的 Jsoup 编码 URL

  26. 26

    如何在PHP中大写字符串的第一个字母(带有变音符号)?

  27. 27

    C ++字符串/字符和重音符号

  28. 28

    C ++字符串/字符和重音符号

  29. 29

    填充包含重音符号的字符串

热门标签

归档