用textout输出的字符在中文系统下,某些符号会被显示为中文字符。如何实现在中文系统下实现和英文系统一样的原样输出?设置了canvas.font.charset := ANS_CHARSET可不起作用。

解决方案 »

  1.   

    或者将字符集设置为
    Canvas.Font.Charset := DEFAULT_CHARSET;
      

  2.   

    那你显示的肯定有ASCII值大于127的字符了,不然不会变成中文字符。
      

  3.   

    帖子已加分。textout 逐个字符没问题,就是输出字符串连续的特殊符号变成中文了。
    继续等高手。
      

  4.   

    var str:string;
    定义成string试试
      

  5.   

    是不是因为unicode的原因,我是猜的
      

  6.   

    有没有会的?
    就是特殊字符按英文原样输出。Texout API似乎是自动根据系统语言进行不同的输出。
    在中文系统下把特殊字符按中文输出了(乱码)
    我只要求Texout不要自作聪明。
    有没有Ansi_Textout之类的API?或着某个属性可以控制?
    Texout的字符串是Pchar,跟string没有关系。
    Canvas.charset理应起作用,可是它不起作用。
    国外有资料说临时修改系统的语言区域属性,有这么麻烦吗?
    就没有办法让textout别自以为是吗?
      

  7.   

    var str:ansistring;
    这样定义试试,自己没试过,不一定行
    一般中文中夹的字符都是当做中文表示,如果想强制改,那要把字符区别出来重新组合字符串
      

  8.   

    字符的显示有两种,如1在中文中按16进制表示为0xA3 0XB1,但是在ASCII码中表示为0X31,表示不同显示出来的字符就有中英文的区别了
      

  9.   

    首先要确定你的输出内容的编码格式。
    建议用wideString或将内容编码成UTF8格式存放在string中,然后再输出的时候将其转换成WideString用TextOutW输出。
      

  10.   

    wliaoc, ansistring不起作用,早就试过了。
    关键还是Texout这个API的处理方式问题。
    用Texout一个一个字符地输出,可以做到,但速度比输出整个字符串要慢很多。
    所以用特殊字符特殊对待或画图的方法在效率上是不允许的。regersubadm
    的方法可能和我的需求是相反的吧。
      

  11.   

    “你机器的原因,我这里可以正常输出英文与中文的混合。”
    你没看清问题吧。我这里也正常输出英文与中文的混合,要求是只输出英文,不输出中文,
    一个中文字要输出为两个ANSI字符。