13 12
发新话题
打印

Unicode问题,等待各位答复!

Unicode问题,等待各位答复!

我阅读了不少关于这方面的资料
结果仍然一头雾水!
一个程序到底怎样才算支持Unicode啊?
我看Delphi(D7)的代码中,Canvas.TextOut使用的API是ExtTextOut
而这个ExtTextOut又分为ExtTextOutA和ExtTextOutW
我想系统会自动根据需要决定使用ExtTextOutA或者ExtTextOutW的
问题1:那么为什么说Delphi又不支持Unicode呢?
我看了Delphi7的TNT控件,里面写文字的API就是DrawTextW和SetWindowTextW
问题2:如果一个程序直接使用DrawText和SetWindowText,不也一样效果吗?系统不是会自动决定使用哪个API吗?
我把使用了支持Unicode的Tnt的一个标签控件,输入中文字符
然后在英文XP下一看,全是乱码
问题3:支持Unicode有什么用啊?乱码还是乱码啊!
请知道的朋友解答一下,我没弄清楚这几个问题!
我到中年了。没有钱!怎么办?

TOP

系统是不会自动决定使用哪个API的.例如直接使用TextOut的话, 如果你的程序#define UNICODE了,它就编译成TextOutW,如果没有,它就编译成TextOutA,EXE文件就最终用其中一个.例如你的一个文件名中包含了一个繁体的"黒"字,如果不使用UNICODE你写一个ExtractPath的功能的时候,碰到这个"黒"字它就会出问题.因为它其中一个编码是'\\'.不过我又觉得奇怪,BCB的函数似乎都不是UNICODE的,却可以正确提取出路径来.ACDSEE似乎都不是UNICODE的.
Search author named w1984721 ,You will be surprised.

TOP

"我把使用了支持Unicode的Tnt的一个标签控件,输入中文字符
然后在英文XP下一看,全是乱码"关于这个,应该是字库的问题,中文字的问题还不大.韩文就有问题了.如果韩文,你不用UNICODE,就算你有韩文的字库,它都是乱码.如果你用了UNICODE并且有韩文的字库.它就可以正确显示.
Search author named w1984721 ,You will be surprised.

TOP

DELPHI封装得太那个了,或者是作者之前没有考虑好UNICODE的问题.很多类都是ANSI的.无法通过简单的#define UNICODE之类的办法就实现全UNICODE的支持.在下写用C的写UNICODE的程序有一段时间了.发现不仅仅是SetWindowText那些分SetWindowTextA和SetWindowTextW,甚至连SendMessage也分SendMessageA和SendMessageW,当然还有DefWindowProc函数了.
Search author named w1984721 ,You will be surprised.

TOP

引用:
原帖由 x_uy_u_n 于 2008-4-22 10:48 发表
DELPHI封装得太那个了,或者是作者之前没有考虑好UNICODE的问题.很多类都是ANSI的.无法通过简单的#define UNICODE之类的办法就实现全UNICODE的支持.在下写用C的写UNICODE的程序有一段时间了.发现不仅仅是SetWindowTex ...
x_uy_u_n好谦虚哦,居然跟我说在下,
经过你这么一讲解,我基本明白了!
明天的分就全给你啦,现在我所有评分用完了!
太感谢了!
我到中年了。没有钱!怎么办?

TOP

这个问题水会长很清楚
What does it take to make our world different?

TOP

进来学习的
你才是国家队的,你全家都是国家队的

TOP

delphi7在unicode方面确实比较令人头疼

TOP

Borland在C++ Builder中提供ITE库处理多国语言,估计Delphi用的也是同一套,在帮助文件列表中可以找到说明

Integrated Translation Environment

TOP

我前阵子研究过一段时间,基本搞明白了,不过现在懒得打字。。。
超级简单易用的音视频转换组件 支持RMVB解码 FFmpeg for Delphi / VB http://www.CCAVC.com

TOP

 13 12
发新话题