procedure TForm1.Button1Click(Sender: TObject);
   var   
      S:   string;   
      W:   WideString;   
  begin   
      //取
      if   not   FileExists('c:\12.txt')   then   Exit;
      with   TMemoryStream.Create   do   try
          LoadFromFile('c:\12.txt');
          if   Size   <   4   then   Exit;
          SetLength(S,   2);
          Read(S[1],   Length(S));
          if   Copy(S,   1,   2)   <>   #$FF#$FE  then   Exit;
          SetLength(W,   (Size   -   2)   div   SizeOf(WideChar));
          Read(W[1],   size-2);
          richedit1.Text   :=W;
      finally
          Free;   
      end;   
  end;
上面这段代码显示UNICODE中文英文都可以,但一些特殊字符比如用ord返回为255的字符显示?,这个字符原本是一个象音标的字符。
哪个哥哥能帮我解决下啊。
    主要是我做的程序是查文件夹的,有个文件夹有这个字符,所以查不出但OPENDIAGOL能显示,MEMO,EDIT都不能显示
这个字符是ÿ

解决方案 »

  1.   

    已经超出了标准asiic码范围,估计是双字节中的一个字节
      

  2.   

    这是一种古老而简单的文件名加密方式
    可以麻烦点,加一句判断
    if ord(x)=255 Then
    ...
      

  3.   

    笑死我了,太娱乐了,连加密都扯出来了,比扯ascii什么的有创意多了,csdn真是个大林子啊换个unicode版的控件就显示出来了
      

  4.   

    可是这个是文件夹名里的,我怎么打开啊?
    一定要用UNICODE控件吗,有程序自己处理不行么?谢谢
      

  5.   

    额 不得不说,三楼所说的“加密”是有道理的,在远古的DOS年代,可以在目录名用#255来简单加密。
    如果仅仅是为了显示(不需要修改)的话,你可以在显示时把 #255 替换为其他可显示字符。正常是不能显示为ÿ的,你可以把Font.CharSet 设置为“TURKISH_CHARSET”
    就可以显示为ÿ
    但是注意:这样设置后就无法显示中文。
      

  6.   

    好的,谢谢windindance,可是opendilog为什么能显示ÿ 
    文件夹,还有其他的文字的文件夹,都同时显示的,难道opendlog是调用的windows的什么什么吗
      

  7.   

    难道用 findfrist文件查找不了含ÿ 的文件夹里的文件吗?有什么办法没有啊,各位哥哥
      

  8.   

    windows又不是dos,dos还只能认fat分区呢,ntfs的文件名本身就是unicode的,*nix的ext2/3分区也照样可以用utf-8保存文件名,跟加密有毛关系?什么怎么打开?
    自己处理当然可以了,用户态的东西别人能实现的当然你也能实现,有支持unicode的vcl控件不用非要自己实现谁也不拦着你都告诉你了unicode,不懂就去找东西看,windows nt系列本身就是unicode内核的
      

  9.   

    楼上的 windows nt系列本身就是unicode内核的 ,做何理解?