QTextCodec Class 参考手册

来源:互联网 发布:mac鼠标右键设置 编辑:程序博客网 时间:2024/06/05 11:40

QTextCodec Class 参考手册 
[QtCore module]

QTextCodec类提供了文字编码转换. More...

 #include <QTextCodec>

Note: 此类所有函数可 重载, 除了 setCodecForTr(), setCodecForCStrings(), QTextCodec(), 和 ~QTextCodec().

  • List of all members, including inherited members
  • Qt 3 support members

Public Types

  • class ConverterState
  • enum ConversionFlag { DefaultConversion, ConvertInvalidToNull, IgnoreHeader }
  • flags ConversionFlags

Public Functions

  • virtual QList<QByteArray> aliases () const
  • bool canEncode ( QChar ch ) const
  • bool canEncode ( const QString & s ) const
  • QByteArray fromUnicode ( const QString & str ) const
  • QByteArray fromUnicode ( const QChar * input, int number, ConverterState * state = 0 ) const
  • QTextDecoder * makeDecoder () const
  • QTextEncoder * makeEncoder () const
  • virtual int mibEnum () const = 0
  • virtual QByteArray name () const = 0
  • QString toUnicode ( const QByteArray & a ) const
  • QString toUnicode ( const char * input, int size, ConverterState * state = 0 ) const
  • QString toUnicode ( const char * chars ) const

Static Public Members

  • QList<QByteArray> availableCodecs ()
  • QList<int> availableMibs ()
  • QTextCodec * codecForCStrings ()
  • QTextCodec * codecForHtml ( const QByteArray & ba, QTextCodec * defaultCodec )
  • QTextCodec * codecForHtml ( const QByteArray & ba )
  • QTextCodec * codecForLocale ()
  • QTextCodec * codecForMib ( int mib )
  • QTextCodec * codecForName ( const QByteArray & name )
  • QTextCodec * codecForName ( const char * name )
  • QTextCodec * codecForTr ()
  • void setCodecForCStrings ( QTextCodec * codec )
  • void setCodecForLocale ( QTextCodec * c )
  • void setCodecForTr ( QTextCodec * c )

Protected Functions

  • QTextCodec ()
  • virtual ~QTextCodec ()
  • virtual QByteArray convertFromUnicode ( const QChar * input, int number, ConverterState * state ) const = 0
  • virtual QString convertToUnicode ( const char * chars, int len, ConverterState * state ) const = 0


详细说明

QTextCodec类提供文字之间的编码转换.

Qt 使用 Unicode 存储, 操作字符串. 在许多情况下,你可能希望使用不懂得编码来处理数据. 例如, 大多数Japanese文档仍用Shift-JIS or ISO 2022-JP存储, 然而Russian用户常用KOI8-R or Windows-1251.

Qt 提供了一套QTextCodec类去帮助转换非-Unicode格式到Unicode.你也可以创建你自己的编码类.

支持的编码有:

  • Apple Roman
  • Big5
  • Big5-HKSCS
  • CP949
  • EUC-JP
  • EUC-KR
  • GB18030-0
  • IBM 850
  • IBM 866
  • IBM 874
  • ISO 2022-JP
  • ISO 8859-1 to 10
  • ISO 8859-13 to 16
  • Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
  • JIS X 0201
  • JIS X 0208
  • KOI8-R
  • KOI8-U
  • MuleLao-1
  • ROMAN8
  • Shift-JIS
  • TIS-620
  • TSCII
  • UTF-8
  • UTF-16
  • UTF-16BE
  • UTF-16LE
  • UTF-32
  • UTF-32BE
  • UTF-32LE
  • Windows-1250 to 1258
  • WINSAMI2

QTextCodecs常被用来将本地的编码转换为Unicode.假设你有些Russian KOI8-R编码的字串,希望转换为Unicode. 最简单的方法如下:

 QByteArray encodedString = "..."; QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QString string = codec->toUnicode(encodedString);

执行完后, string 保存了转换为Unicode的文本. 将Unicode字串转换为本地编码同样简单:

 QString string = "..."; QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QByteArray encodedString = codec->fromUnicode(string);

陆续读或写各种编码, 使用 QTextStream 和它的 setCodec() 函数. 查看QTextCodec向文件I/O读写的范例Codecs.

当试图转换块数据时应当注意,例如,从网络获取的数据.这种情况,可能将多字节字符分成几块. 将会导致丢失字符甚至全部转换失败.

在类似这种情况下使用QTextDecoder 对象来编码和使用 QTextDecoder 来完成整个译码过程, 如下:

 QTextCodec *codec = QTextCodec::codecForName("Shift-JIS"); QTextDecoder *decoder = codec->makeDecoder(); QString string; while (new_data_available()) {     QByteArray chunk = get_new_data();     string += decoder->toUnicode(chunk); }

The QTextDecoder对象保存了块与块之间的状态所以即使多个字节的字符被分成多块也能正常工作.

创建你自己的编码类

创建QTextCodec子类可以为Qt添加新的文字编码支持.

The pure virtual functions describe the encoder to the system and the coder is used as required in the different text file formats supported by QTextStream, and under X11, for the locale-specific character input and output.

向Qt添加新的编码支持,需要创建QTextCodec子类,并实现下表的函数.

FunctionDescriptionname()返回正式编码的名称. 如果编码在 IANA character-sets encoding file中, the name 将为编码首选MIME name.aliases()返回编码的别名. QTextCodec提供了默认实现返回一个空列表. 如, "ISO-8859-1" has "latin1", "CP819", "IBM819", and "iso-ir-100" as aliases.mibEnum()如果编码在 IANA character-sets encoding file中,则返回MIB枚举类型.convertToUnicode()将8位字符串转换为Unicode.convertFromUnicode()将Unicode转换为8位字符串.

你将发现为你的编码创建一个插件更方便; 查看 How to Create Qt Plugins 获取详细信息.

See also QTextStream, QTextDecoder, QTextEncoder, and Codecs Example.


Member Type Documentation

enum QTextCodec::ConversionFlag
flags QTextCodec::ConversionFlags

ConstantValueDescriptionQTextCodec::DefaultConversion0No flag is set.QTextCodec::ConvertInvalidToNull0x80000000如果此标志被设置,每个无效的输入将被转换为null字符输出.QTextCodec::IgnoreHeader0x1忽略所有的Unicode字节序.

The ConversionFlags type is a typedef for QFlags<ConversionFlag>. It stores an OR combination of ConversionFlag values.


Member Function Documentation

QTextCodec::QTextCodec ()   [protected]

构造一个QTextCodec, 并且赋予最高的优先级. QTextCodec 应在堆上构造 (i.e. 使用 new关键字). Qt 获取所有权并在应用程序结束时删除.

Warning: 此函数不可 重载 .

QTextCodec::~QTextCodec ()   [virtual protected]

析构QTextCodec. 注意你不应该自己删除codecs:一旦创建便由Qt负责.

Warning: 此函数不可 重载 .

QList<QByteArray> QTextCodec::aliases () const   [virtual]

子类返回别名序列

编码标准别名可以查看 IANA character-sets encoding file.

QList<QByteArray> QTextCodec::availableCodecs ()   [static]

返回所有可用的编码, 调用 QTextCodec::codecForName()通过name获得QTextCodec的name.

如果编码有别名,立标将包含许多提及的相同编码.

See also availableMibs(), name(), and aliases().

QList<int> QTextCodec::availableMibs ()   [static]

为多有可用的编码返回MIBs列表. Call QTextCodec::codecForMib() to obtain the QTextCodec for the MIB.

See also availableCodecs() and mibEnum().

翻译了部分Qt4.5的参考手册,详细地址:http://l.99081.com/jieen/Qt451/index.html

刚开始,慢慢来!坚持

0 0
原创粉丝点击