C# 的 String 中,能不能保存不可见字符,比如 0x1c 0x1d 等?比如 C++中,char  m_buf[100] = {0};m_buf[0] = 0x1c; //保存不可见字符我想在 C# 的 String 中,加入一个不可见字符 0x1c ,不知该如何写呢·!谢谢各位!

解决方案 »

  1.   

    你可以用下面的方法:
    char[] m_buf = new char[100];
    m_buf[0] = Convert.ToChar(0x1c);
    m_buf[1] = (char)0x1c;
      

  2.   

    我不是非常的赞同楼主这样做法。不过你要知道一点。乱码不是你想看到的,也是看不明白的,只是在当前的语言文化下,显示错误而已。这只是显示的而已。你对这个显示内容无法复制,复制可能回导致错误。为什么不可以用CArray<byte,byte&>保存下来,或者用byte*保存呢?是否可以实现楼主做法是第二,我想楼主最好可以给我个一定要这样做的理由先:) 
      

  3.   

    TO:wuyazhe   问题回答的很有风格  后台用的是C++连接的 SqlServer2005 ,将很多字符做了处理,如将单引号替换成了 0x1c ,那么 asp.net 的网页中也要这样做,并且在网页的显示之前还要把从数据库中读出的 0x1c 替换成 单引号
      为什么要用到不可见字符,是因为这些字符不会与用户输入的字符冲突……
      

  4.   

    赞同 wuyazhe
    难道没有变通办法吗
    这样即使可行,但实在是不值得。
      

  5.   

    如果只是为了不引起冲突。你可否尝试一下你第一个贴里。别人给你的方法呢,用base64试试?
      

  6.   

    因为你现在这个转换实在是不知道你的转换规则。而且可能有某个字节是0,用base64貌似不会出现类似问题。发送邮件也是用的base64编码的。
      

  7.   

    String可以保存任何字符,不管可见还是不可见。
    只是不可见的字符怎么输入有点麻烦,不管是编译器里还是用户界面,1楼的方法lz可以试试。
      

  8.   

    TO:wuyazhe   base64编码后,与原文的长度有很大的出入,至少有会多3分之一的长度,况且这个编解码的性能损耗是我不愿意在程序中付出的! 我想要处理的就是在string中保存0x1c这类不可见字符,且读出数据库时,检测到这类0x1c的不可见字符,然后自己来处理即可!仅此而己,乱码的情况,我程序会担这个责!:-) 一会儿试试 雪尘 方法! 另外,不建议各位就解决问题的方向性在此作过多的探讨,因为问题本身已经出来了,所以建议各位能就问题本身帮我解释一二呢!:-) 非常感谢哦!
      

  9.   

    c#2.0&ajax.net 讨论群
    群号码:32998626