`
ideage
  • 浏览: 328581 次
社区版块
存档分类
最新评论

ANSI和Unicode练习后记

阅读更多

首先,再次问候大家,春节好!祝愿D语言社区兴旺发达,祝愿JavaEye蒸蒸日上!

在前文中,已经讨论了如何调用ANSI和多字节的函数。本文目的是关于在D中如何更好应用。当然,很多人认为完全可以使用宽字符的函数,但是,有时候,你要调用的函数是ANSI函数(例如WinExec,仅仅有ANSI版本,不支持Unicode,当然你可以使用麻烦的ShellExecuteEx),你就必须了解Unicode的相关知识。建议阅读前文http://ideage.iteye.com/blog/119177,运行相关例子,认真揣摩调用的几个用法。


1.首先要明白你使用的char是什么格式。char在D中,有两种格式:ANSI,Unicode。ANSI是和C兼容的。如果你的源码保存格式是UTF8,或者UTF32,那么你的char的格式就是Unicode;否则ANSI。明白char的格式,调用相关函数就好办了。

2.根据格式调用。如果是ANSI格式,调用ANSI函数时,使用std.string.toStringz函数就可以了。如果源码是Unicode格式,如果继续使用前面的方法,调用会失败。很幸运的,你只要理解了格式,就知道解决办法。

3.源码是Unicode格式时,调用ANSI函数,要使用字节转换。代码说话:
wchar[] a2w( char[] a ) 
{
	return toUTF16(a); 
} 

char[] wcs2mbz(wchar[] ws)    
{    
    uint codepage =  1; //2000/+    
    char[] rz;     
    rz.length = WideCharToMultiByte(codepage, 0, ws.ptr, ws.length, null, 0, null, null) + 1;    
    WideCharToMultiByte(codepage, 0, ws.ptr, ws.length, rz.ptr, rz.length, null, null);    
    rz[rz.length-1] = 0;    
    rz.length = rz.length-1;    
    return rz;    
}    

char[] uc2cz(char[] a)
{
	return wcs2mbz(a2w(a));
}



调用uc2cz转换,然后传递转换后的指针就可以了:
char[] files="c:\NotePad.exe";
WinExec( uc2cz(files).ptr,1);

4.上述的很简单,如果有错误,请大家指正!谢谢!
分享到:
评论
3 楼 wandernet 2008-07-05  
要在dfl的listview控件里显示来自mysql的中文字符。
怎么出错了,提示 “unicode.tostring16,不完全的utf输入"


在tango 的Stdout标准输出里输出 来自mysql的中文字符,怎么没任何显示。
C库的printf(。。) 正常
2 楼 oldrev 2008-02-16  
新年快乐!
1 楼 DavidL 2008-02-14  
支持一个!新年快乐!

相关推荐

    易语言Ansi与Unicode转换源码

    在易语言中进行Ansi到Unicode或Unicode到Ansi的转换,主要是为了处理不同编码间的兼容性和数据交换。转换源码可能涉及以下关键步骤: 1. **读取Ansi文本**:首先,你需要读取存储为Ansi格式的文本文件,这通常通过...

    易语言Ansi与Unicode转换

    易语言Ansi与Unicode转换源码,Ansi与Unicode转换,AnsiToUnicode,UnicodeToAnsi,AnsiToUnicode2,UnicodeToAnsi2,RtlAnsiStringToUnicodeString,RtlUnicodeStringToAnsiString,RtlFreeUnicodeString,RtlFreeAnsiString...

    Unicode和ANSI对照表

    就是Unicode和ANSI码的对照文件。 四个文本,两个程序。 文本Unicode是Unicode表 Unicode2ANSI是Unicode文本另存为ANSI unicodeandANSI.txt是对照表的Unicode版本 unicodeandANSI2ANSI.txt是对照表的ANSI版本 有些...

    Ansi转Unicode软件

    ANSI编码和Unicode编码是两种常见的字符编码标准,它们各自有不同的特点和应用场景。本文将详细介绍这两种编码的区别以及如何在Windows操作系统下进行转换。 首先,ANSI编码,也称为Windows默认的多语言编码或代码...

    字符串十六进制转换工具(包含ANSI和UNICODE)

    本工具专注于ANSI和UNICODE字符串与十六进制之间的转换,这涉及到字符编码和二进制数据的理解。 首先,我们要理解ANSI和UNICODE的概念。ANSI字符串通常指的是基于特定地区或语言的ASCII编码,它使用7位或8位来表示...

    ANSI2Unicode_1.0.3

    该工具的核心功能是将使用ANSI编码的文本转换成Unicode编码,从而确保在任何支持Unicode的环境中都能正确显示和处理这些文本。它的版本号1.0.3表明这是一个较为成熟的版本,经过了多次迭代和优化,应该具有较高的...

    C语言UTF8到ANSI和Unicode转换代码

    本文将深入探讨C语言中UTF8、ANSI和Unicode字符集之间的转换方法,以及如何在MFC(Microsoft Foundation Classes)项目中集成这些转换代码。 首先,我们要了解UTF8、ANSI和Unicode的概念。UTF8是一种变长的Unicode...

    Ansi、Unicode、UTF8字符串之间的转换,wprintf

    在 Windows 操作系统中,常见的字符串编码方式有三种:Ansi、Unicode 和 UTF8。今天我们将详细介绍这三种编码方式之间的转换,包括 Ansi 转 Unicode、Unicode 转 Ansi,以及使用 wprintf 函数进行字符串输出。 Ansi...

    ANSI 和Unicode相互转换的类

    ANSI和Unicode是两种常见的字符编码标准,它们在处理不同语言的文本时起着关键作用。本文将深入探讨ANSI和Unicode的区别,以及如何在C++中使用MFC库实现它们之间的转换。 首先,让我们了解ANSI和Unicode的基本概念...

    Ansi 和 Unicode的base64 加密和解密

    base64 加密和解密,encode、decode,包括 Ansi 和 Unicode。

    文本转码 ansi转unicode

    ANSI和Unicode是两种常见的字符编码标准,它们各自有其特性和适用场景。本文将深入探讨“文本转码 ANSI转Unicode”这一主题,特别是针对C#编程语言的实现方法。 首先,我们需要了解ANSI编码。ANSI编码并非一个严格...

    Ansi转Unicode编程的朋友会用到.

    Ansi转Unicode.exe编程的朋友会用到.

    易语言Ansi与Unicode转换源码.7z

    在易语言中,涉及到字符编码的问题时,我们通常会遇到Ansi和Unicode这两种不同的字符编码方式。 Ansi编码,也称为本地代码页或MBCS(多字节字符集),是基于特定区域设置的编码系统。在Windows系统中,Ansi编码通常...

    Ansi与Unicode转换.rar

    在编程领域,Ansi和Unicode是两种不同的字符编码标准,它们在处理文本数据时有着显著的区别。本资源“Ansi与Unicode转换.rar”显然包含了关于这两种编码之间转换的易语言源代码,这对于学习和理解字符编码转换机制...

    utf-8、ANSI、Unicode相互转化c++实现

    utf-8、ANSI、Unicode相互转化c++实现 std::string ConverANSI2UTF8(const std::string & str); std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str)...

    ansi2unicode批量转换软件

    使用“ansi2unicode批量转换软件”这样的工具,可以方便地解决这些问题,确保数据的完整性和一致性。对于那些需要处理多语言内容的开发者和企业来说,这款工具是一个非常实用的助手。 总的来说,ansi2unicode批量...

    如何将一个ansi的文本文件转为unicode格式

    将ANSI文本文件转换为Unicode格式是编程和文件处理中常见的需求,尤其是在处理包含多语言或特殊字符的数据时。在给定的文件信息中,提到了几种不同的方法和过程,包括`TGBUCS.GB_USC2`、`TopAnsiToUTF8`、`UTF8To...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    "CharsetConv"类提供了一个工具,帮助开发者在ANSI、Unicode(Little Endian和Big Endian)、UTF-8及UTF-8+BOM之间灵活转换,从而避免编码问题带来的困扰。通过深入学习和实践,开发者可以更好地应对各种编码挑战,...

    文本文件编码转换:ANSI、Unicode、UTF-8相互转换(修改版)

    ANSI --> Unicode ANSI --> Unicode big endian ANSI --> UTF-8 Unicode --> ANSI Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码...

    批量txt编码ansi转unicode

    批量转换文本编码的软件///////////////////////

Global site tag (gtag.js) - Google Analytics