首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows phone7中的ASCIIEncoding

Windows phone7中的ASCIIEncoding
EN

Stack Overflow用户
提问于 2010-10-26 17:23:33
回答 6查看 12.9K关注 0票数 19

有没有办法在Windows phone7中使用ASCIIEncoding?

除非我做错了什么,否则Encoding.ASCII是不存在的,我需要它来进行C# -> PHP加密(因为PHP在SHA1加密中只使用ASCII )。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-26 18:43:57

你自己实现起来很容易,Unicode永远不会弄乱ASCII代码:

代码语言:javascript
复制
    public static byte[] StringToAscii(string s) {
        byte[] retval = new byte[s.Length];
        for (int ix = 0; ix < s.Length; ++ix) {
            char ch = s[ix];
            if (ch <= 0x7f) retval[ix] = (byte)ch;
            else retval[ix] = (byte)'?';
        }
        return retval;
    }
票数 44
EN

Stack Overflow用户

发布于 2010-10-26 18:17:51

在你的问题中没有看到任何细节,这可能会偏离正轨。你说得对,Silverlight不支持ASCII编码。

然而,我怀疑实际上UTF8会做你需要的事情。值得注意的是,单字节ASCII字符序列和以UTF-8编码的同一组字符是相同的。也就是说,完整的ASCII字符集被UTF-8中的前128个单字节码点逐字重复。

票数 4
EN

Stack Overflow用户

发布于 2012-08-16 09:57:39

我有一个编写CSV文件的Silverlight应用程序,这些文件必须以ASCII编码(当您在Excel中打开文件时,使用UTF-8会导致重音字符显示错误)。

由于Silverlight没有Encoding.ASCII类,所以我实现了一个类,如下所示。它对我很有效,希望对你也有用:

代码语言:javascript
复制
/// <summary>
/// Silverlight doesn't have an ASCII encoder, so here is one:
/// </summary>
public class AsciiEncoding : System.Text.Encoding
{
    public override int GetMaxByteCount(int charCount)
    {
        return charCount;
    }
    public override int GetMaxCharCount(int byteCount)
    {
        return byteCount;
    }
    public override int GetByteCount(char[] chars, int index, int count)
    {
        return count;
    }
    public override byte[] GetBytes(char[] chars)
    {
        return base.GetBytes(chars);
    }
    public override int GetCharCount(byte[] bytes)
    {
        return bytes.Length;
    }
    public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
    {
        for (int i = 0; i < charCount; i++)
        {
            bytes[byteIndex + i] = (byte)chars[charIndex + i];
        }
        return charCount;
    }
    public override int GetCharCount(byte[] bytes, int index, int count)
    {
        return count;
    }
    public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
    {
        for (int i = 0; i < byteCount; i++)
        {
            chars[charIndex + i] = (char)bytes[byteIndex + i];
        }
        return byteCount;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4022281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档