Conv$
ConvertedString = Conv$ ( String AS String , SourceCharset AS String , DestinationCharset AS String ) AS String
ConvertedString = Conv ( String AS String , SourceCharset AS String , DestinationCharset AS String ) AS String
转换字符串
String 的编码从
SourceCharset 编码到
DestinationCharset 编码。字符编码用下面这样的字符串描述:
"ASCII码" 、 "ISO-8859-1" 、or "UTF-8"
。
Gambas解释器内部使用UTF-8字符编码。
系统使用的字符编码可以用
System.
Charset取得。在Mandrake 10.2上是
ISO-8859-15
,但是在RedHat上是
UTF-8
!将来,所有的Linux系统可能使用
UTF-8
作为基础。
图形用户界面使用的字符编码可以用
Desktop.
Charset取得。应该总是
UTF-8
。
转换使用
iconv()
GNU库函数,可以转换许多其他编码,包括从编码为土耳其语(ISO-8859-9),韩语(EUC-KR),简体中文(GB2312),阿拉伯语(WINDOWS-1256),西里尔文(KOI8-R),日语(ISO-2022-JP)。。。转换为人类可读的UTF-8。
有关支持的国际文本转换的完整列表,请在终端中键入
iconv -l
。
返回的字符串在内部以一个null字节结尾,但如果将该字符串发送给外部函数用,则这可能还不够。例如,外部函数需要一个以null结尾的宽字符字符串(在C中称为
wchar_t
),该字符串需要以
四个 null字节结束。
要解决此问题,请在转换字符串
之前 向字符串添加一个空字节:
Print Conv(MyString & Chr$(0), "UTF-8", "WCHAR_T")
这样,您将确保字符串在目标字符集中以null结尾。
错误
Examples
DIM sStr AS String
DIM iInd AS Integer
sStr = Conv$("Gambas", "ASCII", "EBCDIC-US")
FOR iInd = 1 TO Len(sStr)
PRINT Hex$(Asc(Mid$(sStr, iInd, 1)), 2); " ";
NEXT
参见