我是非常热爱Borland的编程工具,从Tc2.0到今天的bcb5,几乎爱不释手,VC早已弃置脑后。
然而最近写的小软件在日文windows操作系统上测试了一下却让我大为头疼,乱码问题非常棘手。详见下面的帖子。
虽然我是用C++ Builder编写,但其核心都是VCL,有人得出结论:“VCL不支持Unicode”!那么这就是Bcb及Delphi的致命弱点!制作国际化软件无疑先天不足。
我也知道可以添加多国语言或者翻译一下资源,但这不能解决根本问题,只能在界面上勉强说的过去,可是对于Richedit控件里输入的汉字却无法正常读取〈非中文系统〉。
我在C++ Builder论提的问题,没有得到解决,想到一母同胞的Delphi大哥出道较早,必是高手如云,特来取经求教。
---------------------
参考帖子:
1>>高分急问:我发送中文字符串到日文系统如何才能正常显示?Unicode?
http://expert.csdn.net/Expert/topic/1382/1382281.xml?temp=.4643671
2>>Unicode 转换成 AnsiString 在不同国家是不是得到不同的结果?
http://expert.csdn.net/Expert/topic/1383/1383854.xml?temp=.4545099
3>>我觉得BCB对UNICODE的支持很不好,这在国际化程序设计中非常吃亏!
http://expert.csdn.net/Expert/topic/1395/1395939.xml?temp=.5056421
4>>http://expert.csdn.net/Expert/topic/1327/1327619.xml
这个帖子提到了界面处理的部分方法,可见其麻烦之处。
-------------------
各位高手如果感兴趣的话,可以把自己系统的默认语言改为“日语”就可以测试了,不一定在日文系统上测试。方法如下:(以简体中文win2000pro为例)
打开“控制面板”-“区域选项”-“常规”-“系统的默认语言设置”-“设置默认值(S)”,
选择“日语”,然后重新启动机器。
这样之后,在Delphi或者C++ Builder里创建一测试工程,在窗体上放置Richedit控件,设置好中文字体属性及Unicode的编译选项,写几句测试代码读取并显示Richedit的文本内容(Text属性等)。
编译运行后测试结果:在Richedit里输入汉字:“你好”、“我们”等等,然后读取一下,看看什么结果......
请各路高手都试试,这个问题如果解决我愿奉送500分答谢,目前已抛出了300分没有结帐,请多多关注,所有参与者都有分,这是应该是我们Borland爱你者都应该关心的问题,解决了都大家都有好处......
46 个解决方案
#1
gz
#2
试试CLX
#3
Unicode!
vcl可以用IE、WORD等,应该是支持的!
vcl可以用IE、WORD等,应该是支持的!
#4
最好使用日文C++builder编译一下。
#5
我认为是您自己对UNICODE没有进一步的深入的研究所导致,如果Borland连这个也没有解决,如何生存?
#6
但愿是我孤陋寡闻,还请各位高才试过以后赐教。
#7
真的有500分吗? 这次发达了!
#8
500分小意思,愿听高见。
#9
我觉得楼上说得对,放到各版本操作系统编译一下吧,带上本系统的语言包ini
或,做成英文版即可
或,做成英文版即可
#10
还是做成英文版较好,全世界的人都学过英语
#11
你有没有在真正的日文系统上试过?如果只是把中文系统改成日文不是有点勉强了吗。
#12
“放到各版本操作系统编译一下”!?这有点......
不是想像的那样,比如说,我在日文系统上编译通过,可是如果人家日文系统的默认语言不是日文也不行呀,照样不能解决问题,而且我发现有些中文公司的使用的日文系统(或者在日华人使用的日文系统)中的默认语言并非中文。乱码问题依旧存在。
大家只需在中文系统下更改系统默认语言即可测试(我在楼顶说明的)就明白了,有条件的可以试试非中文系统。
不是界面语言包的问题。
不是想像的那样,比如说,我在日文系统上编译通过,可是如果人家日文系统的默认语言不是日文也不行呀,照样不能解决问题,而且我发现有些中文公司的使用的日文系统(或者在日华人使用的日文系统)中的默认语言并非中文。乱码问题依旧存在。
大家只需在中文系统下更改系统默认语言即可测试(我在楼顶说明的)就明白了,有条件的可以试试非中文系统。
不是界面语言包的问题。
#13
感谢_Bullet_(天流客) 关注:
我在自己安装的日文win2000下和朋友安装的日文winme下测试过的。
日文win2000需要更改系统默认的语言为中文才能勉强过去(一般用户是不情愿的〕,日文winme改了也不行。
我在自己安装的日文win2000下和朋友安装的日文winme下测试过的。
日文win2000需要更改系统默认的语言为中文才能勉强过去(一般用户是不情愿的〕,日文winme改了也不行。
#14
向大家学习!
#15
做成英文版只能解决界面问题,不能解决Richedit的中文读取问题。
在这方面比较好的典型例子是Microsoft的 Msn Messenger和IE,无论什么系统都很正常。
在这方面比较好的典型例子是Microsoft的 Msn Messenger和IE,无论什么系统都很正常。
#16
大家都回家过年了?
#17
改写组件,全部使用WideString,WideChar,还有API的调用,如TextOut改为TextOutW全部自己改下即可~~~
#18
在windows2000上, 因为内核是Unicode, 所以你最大的问题是缺少Unicode的VCL, 你可以用MultipleByteToWidechar和WideCharToMultipleByte这两个函数来重写VCL的Component, 这是很繁重的工作,不过还好, 现在已经有现成的Unicode VCL Component, 有了它,你就可以轻松搞定! 同时实现繁简及日韩等文字的显示和输入。 当然还有用不同的文字支持。
在Windows98上, 这是一个很困难的事情! 你看看微软的Word, 当输入一个简体, 一个繁体时, 它是怎样解决这个问题的?它内嵌套了一个内码转换的东东,当输入时, 它自动识别内码, 确定是繁体还是简体, 如果是简体内码, 就用简体字体来显示,如果是繁体内码, 就用繁体字体来显示。 真是一塌糊涂(个人意见),这主要是window9.x不是以Unicode来开发的原故。用了Unicode VCL Component的之后, 勉强能显示部分国家的说言文字, 不过实现真正的Unicode还是很困难。
Unicode VCL Component我要找一下, 过一会发给你。(好像是FullSource)
Unicode这个问题,我在两年前玩了一下, 有些地方还未搞定。很多有关的东西都找不到DownLoad的地址了。
在Windows98上, 这是一个很困难的事情! 你看看微软的Word, 当输入一个简体, 一个繁体时, 它是怎样解决这个问题的?它内嵌套了一个内码转换的东东,当输入时, 它自动识别内码, 确定是繁体还是简体, 如果是简体内码, 就用简体字体来显示,如果是繁体内码, 就用繁体字体来显示。 真是一塌糊涂(个人意见),这主要是window9.x不是以Unicode来开发的原故。用了Unicode VCL Component的之后, 勉强能显示部分国家的说言文字, 不过实现真正的Unicode还是很困难。
Unicode VCL Component我要找一下, 过一会发给你。(好像是FullSource)
Unicode这个问题,我在两年前玩了一下, 有些地方还未搞定。很多有关的东西都找不到DownLoad的地址了。
#19
说错了, Window2000不需要文字支持。只需要Unicode输入法就行。(MS Unicode IME 5.02)微软网站免费下载。
而Windows9.x必须有语言支持包, 微软网站免费下载。
而Windows9.x必须有语言支持包, 微软网站免费下载。
#20
我也遇到了类似的问题,我在做一个日语背单词的软件,在我的软件里输入日文有很多字符输不进去,倒现在没有解决。。
咱们可以一起研究一下。
我的QQ:12378456 (一般都不在)
MSN:z33@163.com (一天到晚挂着)
咱们可以一起研究一下。
我的QQ:12378456 (一般都不在)
MSN:z33@163.com (一天到晚挂着)
#21
我的WinXP是E文的,都有这个问题,其实是VCL内部很一部分不是Unicode所导致的
所以我写的都是English的,什么平台都OK
/by LY http://www.99898.com/www/lysoft
所以我写的都是English的,什么平台都OK
/by LY http://www.99898.com/www/lysoft
#22
我的XP也是英文的,但是对中文支持的很好~~
#23
gz
#24
感谢 "Wnyu(过年了,向大家要红包回家) "给俺带来了福音!
请尽快帮俺找到“Unicode VCL Component”,定重重酬谢。
目前,我实在不明白,我的Richedit明明能够输入中文,也能够显示中文,但读出来却不正确。看到的是“你”字,读其Text属性却是“?”,难道这么个小问题就无法解决?
我不要求那么高、那么完美。而且我也能够输入中文、日文,也能够正常显示,就是读不出来!奇怪,可气。自己写的字自己不认识!?
请尽快帮俺找到“Unicode VCL Component”,定重重酬谢。
目前,我实在不明白,我的Richedit明明能够输入中文,也能够显示中文,但读出来却不正确。看到的是“你”字,读其Text属性却是“?”,难道这么个小问题就无法解决?
我不要求那么高、那么完美。而且我也能够输入中文、日文,也能够正常显示,就是读不出来!奇怪,可气。自己写的字自己不认识!?
#25
UP
#26
#define UNICODE
在你的工程里加上试试!
另:还和字体有关的。如果你的字体设置的是 宋体。
而日文里又没有宋体,就会显示乱码!
在你的工程里加上试试!
另:还和字体有关的。如果你的字体设置的是 宋体。
而日文里又没有宋体,就会显示乱码!
#27
呵呵,你想错了,其实DELPHI版的高手是没有BCB多的,思考问题回答问题的深度也是不如BCB的,可能当初的好多高手都走人了导致的。个人愚见。
#28
我在中文windows2000下(加日语ime),delphi3没有这个问题啊.日语输入,读出,IDE调试evaluate/modify都正常.
#29
不过我觉得最好的办法是界面全部先用英文写成,然后把其他语种的语言都写在资源文件中,针对不同的语言系统调用不同的资源文件替换就行了.
稍微复杂一点,不过你的软件看来是要卖钱的嘛,就都折到价格里去好啦!
稍微复杂一点,不过你的软件看来是要卖钱的嘛,就都折到价格里去好啦!
#30
我使用ini文件来保存所有界面和提示等中文文字内容,程序运行时动态的从文件中读取,我测试的情况是这样的,在我的win2000english中(默认字符为中文),可以在该ini文件中输入日文,并可以正常显示大部分文字,这时即使界面使用宋体也没关系。
然后我用win2000japanese(干净的,没有装过任何其它软件,如office之类)作了测试,中文完全不能显示,但是我在原系统下用ultraedit将ini文件转换为unicode格式之后,再到该日文系统下,可以显示大部分文字了,但还是有一部分显示为“?”,和在原系统(win2000english)下使用日文的情况一样。
接着,我在日文系统下安装了中文字库,然后程序里的文字竟然完全无法显示了,部分文字连“?”也不显示,
然后,我将日文系统的默认语言设为中文,所有中文文字都可以正常显示,
我在以上情况中程序都使用宋体的文字。
原来以为将ini文件改为unicode基本可以解决问题,可是用这个文件,到中文win98下一试,所有文字都无法显示,没办法,win98不支持unicode。
然后我用win2000japanese(干净的,没有装过任何其它软件,如office之类)作了测试,中文完全不能显示,但是我在原系统下用ultraedit将ini文件转换为unicode格式之后,再到该日文系统下,可以显示大部分文字了,但还是有一部分显示为“?”,和在原系统(win2000english)下使用日文的情况一样。
接着,我在日文系统下安装了中文字库,然后程序里的文字竟然完全无法显示了,部分文字连“?”也不显示,
然后,我将日文系统的默认语言设为中文,所有中文文字都可以正常显示,
我在以上情况中程序都使用宋体的文字。
原来以为将ini文件改为unicode基本可以解决问题,可是用这个文件,到中文win98下一试,所有文字都无法显示,没办法,win98不支持unicode。
#31
另外,我在win2000english(默认语言中文)的系统下在ini文件中写的日文,在本系统下可以基本正常显示,可是到了日文系统下,反而无法显示了,有点奇怪。。。。
#32
日文编码本身就有3种日语EUC,日语Shift-JIS和unicode,各不相同.
#33
首先感谢大家的热心关注和所做的测试。
其实,我问题的核心并不是中文的显示,主要是VCL控件对非ASC字符的处理(转换)机理,汉字的内码是如何自动转换的。
比如:我研究发现,在Richedit里写的汉字“你”,读取它的Text属性在中文环境下得到的是“你”(C4E3),而在日文环境下得到的是“?”(3F),后来使用Lines属性的SaveToStream属性读取,倒可以正常显示了,但是得到的字符长度已经不是2了,是160,包含了格式信息。那么从两种系统得到的结果来研究,找到其规律就可解决问题。
其实,我问题的核心并不是中文的显示,主要是VCL控件对非ASC字符的处理(转换)机理,汉字的内码是如何自动转换的。
比如:我研究发现,在Richedit里写的汉字“你”,读取它的Text属性在中文环境下得到的是“你”(C4E3),而在日文环境下得到的是“?”(3F),后来使用Lines属性的SaveToStream属性读取,倒可以正常显示了,但是得到的字符长度已经不是2了,是160,包含了格式信息。那么从两种系统得到的结果来研究,找到其规律就可解决问题。
#34
在Borland公司举行的广州研讨会上(2002年11月15日),我曾向Borland公司的高级经理John Kaster问过这样的一个问题,因为我们曾在过去一年里曾对这个问题研究了一段时间,但John Kaster的回复是在Delphi7以前的Version都不支持UNICODE,包括Delphi7,但Delphi.net却对UNICODE很好的支持,但由于Delphi.net是针对瘦客户端的开发工具,如果用在肥客户端的话,就会显得不方便(开发不方便,使用不方便),由于Delphi 7以前的Version的VCL都不支持UNCODE,这样使得一些需要用Delphi开发一个国际性软件的开发人员带来因难,因为它们必须要开发一批相就的支持UNICODE的Component,但还好,已经有公司在此之前已经做到了这一点,请参阅http://expert.csdn.net/Expert/topic/777/777706.xml?temp=.127865
,我的回答。你们可以在提到Website上下载支持UNICODE的一些Component。
但是,就算你拿到支持UNICODE的Component,并不代表你就可以开发出国际性的软件,在Window2000,windowXP和WindowsNT的SP6,它们已采用了UNCODE作为系统内码,但是Windows98,ME和以前的Version并不支持,但们仍然因为在不同的文字的国家里使用不同内码的操作系统,这就意味着你的使用UNICODE软件在window2000可以运行,但在Windows98上却不能。不知道你有没观察到,Microsoft的Word和IE,无论你是什么国家的文字,在什么windows的操作系统上,它都可以正常的显示,这才是技术的难点。
如何去实现这个问题,我想你的分数不够,等有足够的分数后,我们再讨论相应的解决方法吧!
,我的回答。你们可以在提到Website上下载支持UNICODE的一些Component。
但是,就算你拿到支持UNICODE的Component,并不代表你就可以开发出国际性的软件,在Window2000,windowXP和WindowsNT的SP6,它们已采用了UNCODE作为系统内码,但是Windows98,ME和以前的Version并不支持,但们仍然因为在不同的文字的国家里使用不同内码的操作系统,这就意味着你的使用UNICODE软件在window2000可以运行,但在Windows98上却不能。不知道你有没观察到,Microsoft的Word和IE,无论你是什么国家的文字,在什么windows的操作系统上,它都可以正常的显示,这才是技术的难点。
如何去实现这个问题,我想你的分数不够,等有足够的分数后,我们再讨论相应的解决方法吧!
#35
感谢 Wally_wu 指教:
请问我需要有多少分数后才能够有资格和你讨论相应的解决方法?
请问我需要有多少分数后才能够有资格和你讨论相应的解决方法?
#36
我在简体中文WIN98系统中使用Delphi7的Richedit控件时也出现过半个汉字的情况。但是把Richedit的字体改为汉字字体就可以了。日文没试过,可能对你有帮助。
#37
一个解决方法是在进入系统时先检测操作平台的语言,把字体改为适应的字体。
#38
你问题答了一年了!
#39
我的ICQ是199921192,有空讨论!
#40
今天刚上班,几天没来了。
感谢大家的积极参与。我的问题已经基本解决。
不需要用任何第三方控件,不需要用UNICODE(这个也不能解决问题的)。
只要用rtf的格式就完全可以了。用SaveToStream函数读取Richedit控件的内容(rtf格式),然后再发送或者显示。我在日文win98、winme、win2000下都测试通过,根本不需要更改语言设置。即使取消所有中文语言支持也成功了。这种方法同样支持所有国家的语言,只要你能够输入(或者拷贝来)的文字都可以正常存取。
实际上,rtf的字符流已经是把各种文字转换成ASCII字符了,其中包含了语言代码页、字体信息以及文字的内码,Richedit控件会自动正常显示它。而其Text属性因为不包含格式信息,所以不能正常显示。
当然,界面乱码是另外的问题了,我再想办法解决。
感谢大家的积极参与。我的问题已经基本解决。
不需要用任何第三方控件,不需要用UNICODE(这个也不能解决问题的)。
只要用rtf的格式就完全可以了。用SaveToStream函数读取Richedit控件的内容(rtf格式),然后再发送或者显示。我在日文win98、winme、win2000下都测试通过,根本不需要更改语言设置。即使取消所有中文语言支持也成功了。这种方法同样支持所有国家的语言,只要你能够输入(或者拷贝来)的文字都可以正常存取。
实际上,rtf的字符流已经是把各种文字转换成ASCII字符了,其中包含了语言代码页、字体信息以及文字的内码,Richedit控件会自动正常显示它。而其Text属性因为不包含格式信息,所以不能正常显示。
当然,界面乱码是另外的问题了,我再想办法解决。
#41
但我的richedit显示中文有时也得乱码,让我只好让它显示英文,呵呵
#42
^_^
#43
mark
#44
up
#45
关注
#46
gz
#1
gz
#2
试试CLX
#3
Unicode!
vcl可以用IE、WORD等,应该是支持的!
vcl可以用IE、WORD等,应该是支持的!
#4
最好使用日文C++builder编译一下。
#5
我认为是您自己对UNICODE没有进一步的深入的研究所导致,如果Borland连这个也没有解决,如何生存?
#6
但愿是我孤陋寡闻,还请各位高才试过以后赐教。
#7
真的有500分吗? 这次发达了!
#8
500分小意思,愿听高见。
#9
我觉得楼上说得对,放到各版本操作系统编译一下吧,带上本系统的语言包ini
或,做成英文版即可
或,做成英文版即可
#10
还是做成英文版较好,全世界的人都学过英语
#11
你有没有在真正的日文系统上试过?如果只是把中文系统改成日文不是有点勉强了吗。
#12
“放到各版本操作系统编译一下”!?这有点......
不是想像的那样,比如说,我在日文系统上编译通过,可是如果人家日文系统的默认语言不是日文也不行呀,照样不能解决问题,而且我发现有些中文公司的使用的日文系统(或者在日华人使用的日文系统)中的默认语言并非中文。乱码问题依旧存在。
大家只需在中文系统下更改系统默认语言即可测试(我在楼顶说明的)就明白了,有条件的可以试试非中文系统。
不是界面语言包的问题。
不是想像的那样,比如说,我在日文系统上编译通过,可是如果人家日文系统的默认语言不是日文也不行呀,照样不能解决问题,而且我发现有些中文公司的使用的日文系统(或者在日华人使用的日文系统)中的默认语言并非中文。乱码问题依旧存在。
大家只需在中文系统下更改系统默认语言即可测试(我在楼顶说明的)就明白了,有条件的可以试试非中文系统。
不是界面语言包的问题。
#13
感谢_Bullet_(天流客) 关注:
我在自己安装的日文win2000下和朋友安装的日文winme下测试过的。
日文win2000需要更改系统默认的语言为中文才能勉强过去(一般用户是不情愿的〕,日文winme改了也不行。
我在自己安装的日文win2000下和朋友安装的日文winme下测试过的。
日文win2000需要更改系统默认的语言为中文才能勉强过去(一般用户是不情愿的〕,日文winme改了也不行。
#14
向大家学习!
#15
做成英文版只能解决界面问题,不能解决Richedit的中文读取问题。
在这方面比较好的典型例子是Microsoft的 Msn Messenger和IE,无论什么系统都很正常。
在这方面比较好的典型例子是Microsoft的 Msn Messenger和IE,无论什么系统都很正常。
#16
大家都回家过年了?
#17
改写组件,全部使用WideString,WideChar,还有API的调用,如TextOut改为TextOutW全部自己改下即可~~~
#18
在windows2000上, 因为内核是Unicode, 所以你最大的问题是缺少Unicode的VCL, 你可以用MultipleByteToWidechar和WideCharToMultipleByte这两个函数来重写VCL的Component, 这是很繁重的工作,不过还好, 现在已经有现成的Unicode VCL Component, 有了它,你就可以轻松搞定! 同时实现繁简及日韩等文字的显示和输入。 当然还有用不同的文字支持。
在Windows98上, 这是一个很困难的事情! 你看看微软的Word, 当输入一个简体, 一个繁体时, 它是怎样解决这个问题的?它内嵌套了一个内码转换的东东,当输入时, 它自动识别内码, 确定是繁体还是简体, 如果是简体内码, 就用简体字体来显示,如果是繁体内码, 就用繁体字体来显示。 真是一塌糊涂(个人意见),这主要是window9.x不是以Unicode来开发的原故。用了Unicode VCL Component的之后, 勉强能显示部分国家的说言文字, 不过实现真正的Unicode还是很困难。
Unicode VCL Component我要找一下, 过一会发给你。(好像是FullSource)
Unicode这个问题,我在两年前玩了一下, 有些地方还未搞定。很多有关的东西都找不到DownLoad的地址了。
在Windows98上, 这是一个很困难的事情! 你看看微软的Word, 当输入一个简体, 一个繁体时, 它是怎样解决这个问题的?它内嵌套了一个内码转换的东东,当输入时, 它自动识别内码, 确定是繁体还是简体, 如果是简体内码, 就用简体字体来显示,如果是繁体内码, 就用繁体字体来显示。 真是一塌糊涂(个人意见),这主要是window9.x不是以Unicode来开发的原故。用了Unicode VCL Component的之后, 勉强能显示部分国家的说言文字, 不过实现真正的Unicode还是很困难。
Unicode VCL Component我要找一下, 过一会发给你。(好像是FullSource)
Unicode这个问题,我在两年前玩了一下, 有些地方还未搞定。很多有关的东西都找不到DownLoad的地址了。
#19
说错了, Window2000不需要文字支持。只需要Unicode输入法就行。(MS Unicode IME 5.02)微软网站免费下载。
而Windows9.x必须有语言支持包, 微软网站免费下载。
而Windows9.x必须有语言支持包, 微软网站免费下载。
#20
我也遇到了类似的问题,我在做一个日语背单词的软件,在我的软件里输入日文有很多字符输不进去,倒现在没有解决。。
咱们可以一起研究一下。
我的QQ:12378456 (一般都不在)
MSN:z33@163.com (一天到晚挂着)
咱们可以一起研究一下。
我的QQ:12378456 (一般都不在)
MSN:z33@163.com (一天到晚挂着)
#21
我的WinXP是E文的,都有这个问题,其实是VCL内部很一部分不是Unicode所导致的
所以我写的都是English的,什么平台都OK
/by LY http://www.99898.com/www/lysoft
所以我写的都是English的,什么平台都OK
/by LY http://www.99898.com/www/lysoft
#22
我的XP也是英文的,但是对中文支持的很好~~
#23
gz
#24
感谢 "Wnyu(过年了,向大家要红包回家) "给俺带来了福音!
请尽快帮俺找到“Unicode VCL Component”,定重重酬谢。
目前,我实在不明白,我的Richedit明明能够输入中文,也能够显示中文,但读出来却不正确。看到的是“你”字,读其Text属性却是“?”,难道这么个小问题就无法解决?
我不要求那么高、那么完美。而且我也能够输入中文、日文,也能够正常显示,就是读不出来!奇怪,可气。自己写的字自己不认识!?
请尽快帮俺找到“Unicode VCL Component”,定重重酬谢。
目前,我实在不明白,我的Richedit明明能够输入中文,也能够显示中文,但读出来却不正确。看到的是“你”字,读其Text属性却是“?”,难道这么个小问题就无法解决?
我不要求那么高、那么完美。而且我也能够输入中文、日文,也能够正常显示,就是读不出来!奇怪,可气。自己写的字自己不认识!?
#25
UP
#26
#define UNICODE
在你的工程里加上试试!
另:还和字体有关的。如果你的字体设置的是 宋体。
而日文里又没有宋体,就会显示乱码!
在你的工程里加上试试!
另:还和字体有关的。如果你的字体设置的是 宋体。
而日文里又没有宋体,就会显示乱码!
#27
呵呵,你想错了,其实DELPHI版的高手是没有BCB多的,思考问题回答问题的深度也是不如BCB的,可能当初的好多高手都走人了导致的。个人愚见。
#28
我在中文windows2000下(加日语ime),delphi3没有这个问题啊.日语输入,读出,IDE调试evaluate/modify都正常.
#29
不过我觉得最好的办法是界面全部先用英文写成,然后把其他语种的语言都写在资源文件中,针对不同的语言系统调用不同的资源文件替换就行了.
稍微复杂一点,不过你的软件看来是要卖钱的嘛,就都折到价格里去好啦!
稍微复杂一点,不过你的软件看来是要卖钱的嘛,就都折到价格里去好啦!
#30
我使用ini文件来保存所有界面和提示等中文文字内容,程序运行时动态的从文件中读取,我测试的情况是这样的,在我的win2000english中(默认字符为中文),可以在该ini文件中输入日文,并可以正常显示大部分文字,这时即使界面使用宋体也没关系。
然后我用win2000japanese(干净的,没有装过任何其它软件,如office之类)作了测试,中文完全不能显示,但是我在原系统下用ultraedit将ini文件转换为unicode格式之后,再到该日文系统下,可以显示大部分文字了,但还是有一部分显示为“?”,和在原系统(win2000english)下使用日文的情况一样。
接着,我在日文系统下安装了中文字库,然后程序里的文字竟然完全无法显示了,部分文字连“?”也不显示,
然后,我将日文系统的默认语言设为中文,所有中文文字都可以正常显示,
我在以上情况中程序都使用宋体的文字。
原来以为将ini文件改为unicode基本可以解决问题,可是用这个文件,到中文win98下一试,所有文字都无法显示,没办法,win98不支持unicode。
然后我用win2000japanese(干净的,没有装过任何其它软件,如office之类)作了测试,中文完全不能显示,但是我在原系统下用ultraedit将ini文件转换为unicode格式之后,再到该日文系统下,可以显示大部分文字了,但还是有一部分显示为“?”,和在原系统(win2000english)下使用日文的情况一样。
接着,我在日文系统下安装了中文字库,然后程序里的文字竟然完全无法显示了,部分文字连“?”也不显示,
然后,我将日文系统的默认语言设为中文,所有中文文字都可以正常显示,
我在以上情况中程序都使用宋体的文字。
原来以为将ini文件改为unicode基本可以解决问题,可是用这个文件,到中文win98下一试,所有文字都无法显示,没办法,win98不支持unicode。
#31
另外,我在win2000english(默认语言中文)的系统下在ini文件中写的日文,在本系统下可以基本正常显示,可是到了日文系统下,反而无法显示了,有点奇怪。。。。
#32
日文编码本身就有3种日语EUC,日语Shift-JIS和unicode,各不相同.
#33
首先感谢大家的热心关注和所做的测试。
其实,我问题的核心并不是中文的显示,主要是VCL控件对非ASC字符的处理(转换)机理,汉字的内码是如何自动转换的。
比如:我研究发现,在Richedit里写的汉字“你”,读取它的Text属性在中文环境下得到的是“你”(C4E3),而在日文环境下得到的是“?”(3F),后来使用Lines属性的SaveToStream属性读取,倒可以正常显示了,但是得到的字符长度已经不是2了,是160,包含了格式信息。那么从两种系统得到的结果来研究,找到其规律就可解决问题。
其实,我问题的核心并不是中文的显示,主要是VCL控件对非ASC字符的处理(转换)机理,汉字的内码是如何自动转换的。
比如:我研究发现,在Richedit里写的汉字“你”,读取它的Text属性在中文环境下得到的是“你”(C4E3),而在日文环境下得到的是“?”(3F),后来使用Lines属性的SaveToStream属性读取,倒可以正常显示了,但是得到的字符长度已经不是2了,是160,包含了格式信息。那么从两种系统得到的结果来研究,找到其规律就可解决问题。
#34
在Borland公司举行的广州研讨会上(2002年11月15日),我曾向Borland公司的高级经理John Kaster问过这样的一个问题,因为我们曾在过去一年里曾对这个问题研究了一段时间,但John Kaster的回复是在Delphi7以前的Version都不支持UNICODE,包括Delphi7,但Delphi.net却对UNICODE很好的支持,但由于Delphi.net是针对瘦客户端的开发工具,如果用在肥客户端的话,就会显得不方便(开发不方便,使用不方便),由于Delphi 7以前的Version的VCL都不支持UNCODE,这样使得一些需要用Delphi开发一个国际性软件的开发人员带来因难,因为它们必须要开发一批相就的支持UNICODE的Component,但还好,已经有公司在此之前已经做到了这一点,请参阅http://expert.csdn.net/Expert/topic/777/777706.xml?temp=.127865
,我的回答。你们可以在提到Website上下载支持UNICODE的一些Component。
但是,就算你拿到支持UNICODE的Component,并不代表你就可以开发出国际性的软件,在Window2000,windowXP和WindowsNT的SP6,它们已采用了UNCODE作为系统内码,但是Windows98,ME和以前的Version并不支持,但们仍然因为在不同的文字的国家里使用不同内码的操作系统,这就意味着你的使用UNICODE软件在window2000可以运行,但在Windows98上却不能。不知道你有没观察到,Microsoft的Word和IE,无论你是什么国家的文字,在什么windows的操作系统上,它都可以正常的显示,这才是技术的难点。
如何去实现这个问题,我想你的分数不够,等有足够的分数后,我们再讨论相应的解决方法吧!
,我的回答。你们可以在提到Website上下载支持UNICODE的一些Component。
但是,就算你拿到支持UNICODE的Component,并不代表你就可以开发出国际性的软件,在Window2000,windowXP和WindowsNT的SP6,它们已采用了UNCODE作为系统内码,但是Windows98,ME和以前的Version并不支持,但们仍然因为在不同的文字的国家里使用不同内码的操作系统,这就意味着你的使用UNICODE软件在window2000可以运行,但在Windows98上却不能。不知道你有没观察到,Microsoft的Word和IE,无论你是什么国家的文字,在什么windows的操作系统上,它都可以正常的显示,这才是技术的难点。
如何去实现这个问题,我想你的分数不够,等有足够的分数后,我们再讨论相应的解决方法吧!
#35
感谢 Wally_wu 指教:
请问我需要有多少分数后才能够有资格和你讨论相应的解决方法?
请问我需要有多少分数后才能够有资格和你讨论相应的解决方法?
#36
我在简体中文WIN98系统中使用Delphi7的Richedit控件时也出现过半个汉字的情况。但是把Richedit的字体改为汉字字体就可以了。日文没试过,可能对你有帮助。
#37
一个解决方法是在进入系统时先检测操作平台的语言,把字体改为适应的字体。
#38
你问题答了一年了!
#39
我的ICQ是199921192,有空讨论!
#40
今天刚上班,几天没来了。
感谢大家的积极参与。我的问题已经基本解决。
不需要用任何第三方控件,不需要用UNICODE(这个也不能解决问题的)。
只要用rtf的格式就完全可以了。用SaveToStream函数读取Richedit控件的内容(rtf格式),然后再发送或者显示。我在日文win98、winme、win2000下都测试通过,根本不需要更改语言设置。即使取消所有中文语言支持也成功了。这种方法同样支持所有国家的语言,只要你能够输入(或者拷贝来)的文字都可以正常存取。
实际上,rtf的字符流已经是把各种文字转换成ASCII字符了,其中包含了语言代码页、字体信息以及文字的内码,Richedit控件会自动正常显示它。而其Text属性因为不包含格式信息,所以不能正常显示。
当然,界面乱码是另外的问题了,我再想办法解决。
感谢大家的积极参与。我的问题已经基本解决。
不需要用任何第三方控件,不需要用UNICODE(这个也不能解决问题的)。
只要用rtf的格式就完全可以了。用SaveToStream函数读取Richedit控件的内容(rtf格式),然后再发送或者显示。我在日文win98、winme、win2000下都测试通过,根本不需要更改语言设置。即使取消所有中文语言支持也成功了。这种方法同样支持所有国家的语言,只要你能够输入(或者拷贝来)的文字都可以正常存取。
实际上,rtf的字符流已经是把各种文字转换成ASCII字符了,其中包含了语言代码页、字体信息以及文字的内码,Richedit控件会自动正常显示它。而其Text属性因为不包含格式信息,所以不能正常显示。
当然,界面乱码是另外的问题了,我再想办法解决。
#41
但我的richedit显示中文有时也得乱码,让我只好让它显示英文,呵呵
#42
^_^
#43
mark
#44
up
#45
关注
#46
gz