#include <KEncodingProber>

Public Types

enum  ProberState { FoundIt, NotMe, Probing }
enum  ProberType {
  None, Universal, Arabic, Baltic,
  CentralEuropean, ChineseSimplified, ChineseTraditional, Cyrillic,
  Greek, Hebrew, Japanese, Korean,
  NorthernSaami, Other, SouthEasternEurope, Thai,
  Turkish, Unicode, WesternEuropean

Public Member Functions

 KEncodingProber (ProberType proberType=Universal)
 KEncodingProber (const KEncodingProber &)=delete
float confidence () const
QByteArray encoding () const
ProberState feed (const QByteArray &data)
ProberState feed (const char *data, int len)
KEncodingProberoperator= (const KEncodingProber &)=delete
ProberType proberType () const
void reset ()
void setProberType (ProberType proberType)
ProberState state () const

Static Public Member Functions

static QString nameForProberType (ProberType proberType)
static ProberType proberTypeForName (const QString &lang)

Detailed Description

Provides encoding detection(probe) capabilities.

Probe the encoding of raw data only. In the case it can't find it, return the most possible encoding it guessed.

Always do Unicode probe regardless the ProberType

Feed data to it several times with feed() until ProberState changes to FoundIt/NotMe, or confidence() returns a value you find acceptable.

Intended lifetime of the object: one instance per ProberType.

Typical use:

QByteArray data, moredata;
KEncodingProber prober(KEncodingProber::Chinese);
if (prober.confidence() > 0.6)
QString out = QTextCodec::codecForName(prober.encoding())->toUnicode(data);

At least 256 characters are needed to change the ProberState from Probing to FoundIt. If you don't have so many characters to probe, decide whether to accept the encoding it guessed so far according to the Confidence by yourself.

Guess encoding of char array

Definition at line 58 of file kencodingprober.h.

Member Enumeration Documentation


Sure find the encoding.


Sure not included in current ProberType's all supported encodings.


Need more data to make a decision.

Definition at line 64 of file kencodingprober.h.

Constructor & Destructor Documentation

KEncodingProber::KEncodingProber ( KEncodingProber::ProberType  proberType = Universal)

Default ProberType is Universal(detect all possibe encodings)

Definition at line 134 of file kencodingprober.cpp.

Member Function Documentation

float KEncodingProber::confidence ( ) const
the confidence(sureness) of encoding it guessed so far (0.0 ~ 0.99), not very reliable for single byte encodings

Definition at line 200 of file kencodingprober.cpp.

QByteArray KEncodingProber::encoding ( ) const
a QByteArray with the name of the best encoding it has guessed so far

Definition at line 191 of file kencodingprober.cpp.

KEncodingProber::ProberState KEncodingProber::feed ( const QByteArray data)

The main class method.

feed data to the prober

the ProberState after probing the fed data.

Definition at line 150 of file kencodingprober.cpp.

QString KEncodingProber::nameForProberType ( KEncodingProber::ProberType  proberType)

map ProberType to language string

Definition at line 261 of file kencodingprober.cpp.

KEncodingProber::ProberType KEncodingProber::proberTypeForName ( const QString lang)
the ProberType for lang (eg. proberTypeForName("Chinese Simplified") will return KEncodingProber::ChineseSimplified

Definition at line 220 of file kencodingprober.cpp.

void KEncodingProber::reset ( )

reset the prober's internal state and data.

Definition at line 144 of file kencodingprober.cpp.

void KEncodingProber::setProberType ( KEncodingProber::ProberType  proberType)

change current prober's ProberType and reset the prober

Definition at line 214 of file kencodingprober.cpp.

KEncodingProber::ProberState KEncodingProber::state ( ) const
the prober's current ProberState

Definition at line 186 of file kencodingprober.cpp.

The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Wed Jul 8 2020 22:42:18 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.