遇到一个棘手的问题,在c#中用
public static string Chr(int asciiCode)
        {
            if (asciiCode >= 0 && asciiCode <= 255)
            {
                byte[] byteArray = new byte[] { (byte)asciiCode };
                string strCharacter = System.Text.Encoding.Default.GetString(byteArray);
                return (strCharacter);
            }
            else
            {
                throw new Exception("ASCII Code is not valid.");
            }
        }
但当asciiCode<127时都正确显示,当大于127时,显示都是?,用了好多方法都不行,不知道怎么实现了,请教各位大侠,用什么方法能显示扩展的ascii,128~255的字符。

解决方案 »

  1.   

    大于127时,就是双字节的了,如果你只读取其中一个字节肯定就会乱码,可以使用Encoding.Unicode试试
      

  2.   

    一样的啊,我改成
    遇到一个棘手的问题,在c#中用
    public static string Chr(int asciiCode)
      {
      if (asciiCode >= 0 && asciiCode <= 255)
      {
      byte[] byteArray = new byte[] { (byte)asciiCode };
      string strCharacter = System.Text.Encoding.Unicode.GetString(byteArray);
      return (strCharacter);
      }
      else
      {
      throw new Exception("ASCII Code is not valid.");
      }也出不来
      }
      

  3.   

    byte[] buffer = BitConverter.GetBytes(asciiCode);string str = Encoding.UTF-8.GetString(buffer);
    //或者
    string str = Encoding.Unicode.GetString(buffer);
      

  4.   

    这个不是你的问题,因为WINDOWS的默认字体里对>127的ASC编码找不到对应的字符 都显示为?了.
      

  5.   


    public static string Chr(int asciiCode)
    {
      if (asciiCode >= 0 && asciiCode <= 255)
      {
         return "" + (char)asciiCode;
      }
    }
      

  6.   

    定义成方法        public static String ConvertToStringFromBytes(Byte[] bs)
            {
                String str = "";
                foreach (Byte b in bs)
                {
                    if (b >= 0 && b <= 255)
                    {
                        str += (Char)b;
                    }
                }            return str;
            }