我制作的程序在日文操作系统下,TEdit中显示的日文文字总是是乱码,有办法解决吗?

解决方案 »

  1.   

    当然可以~
    try:
    edit1.text:=widestring(s);
      

  2.   

    痛处,delphi的痛处。edit1.text:=widestring(s);
    这么写还是把unicode转为local语言了。很多unicode字符不能处理。
      

  3.   

    widestring真的可以吗?可是我是在直接使用TEdit时发生的,比如将记事本中的文字粘贴进去
    我使用的是窗口默认的字体,所以我想应该和字体是没关系的吧。。
      

  4.   

    to pazee兄:   转换为本地16bits code以后,为何还有unicode不能处理的呢?楼主本身就是日文操作系统。愿听高见~~
      

  5.   

    unicode 是个大字符集,我们常用的都是一个子集。win2000的新宋体是个unicode字符集。
    gbk 字符集是个中文字符集,可以认为它是unicode的一个子集。delphi可以处理的unicode,但是那些VCL控件只能显示本机设置Local字符集,就是我们常用gb2312 (他是gbk的子集)。遗憾的是delphi的IDE环境都不支持unicode编码。为了显示unicode字符必须先转化为gbk,这势必会丢失一部分字符。
    比如版权符号,那些日文、俄文。
      

  6.   

    不过unicode码是不会有什么问题的~~
    widestring转换过来的码字应该就是unicode码,而非gb2312
    此时显示什么就看你的charset了
      

  7.   

    to pazee:
    把字符集设为日文吗,那么如果还有其它语种的操作系统,就要动态的把程序的字符集设为当前系统的字符格式吗??。。但是如果程序中一个form中的所有控件都不是使用ParentFont的话,是不是也要把每个控件的字符格式重新设置一下吗?那岂不是很繁
      

  8.   

    charset 和font.name 设置为default
      

  9.   

    delphi 会利用GetDefFontCharSet函数自己找到操作系统默认字符集~~   比如我得到的就是134(gb2312)
      

  10.   

    我这里没有日文操作系统.楼主你测试一下,看得到的是不是SHIFTJIS_CHARSET 128