// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ********************************************************************** * Copyright (C) 2005-2013, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * file name: ucsdet.h * encoding: UTF-8 * indentation:4 * * created on: 2005Aug04 * created by: Andy Heninger * * ICU Character Set Detection, API for C * * Draft version 18 Oct 2005 * */ #ifndef __UCSDET_H #define __UCSDET_H #include "unicode/utypes.h" #if !UCONFIG_NO_CONVERSION #include "unicode/localpointer.h" #include "unicode/uenum.h" /** * \file * \brief C API: Charset Detection API * * This API provides a facility for detecting the * charset or encoding of character data in an unknown text format. * The input data can be from an array of bytes. * <p> * Character set detection is at best an imprecise operation. The detection * process will attempt to identify the charset that best matches the characteristics * of the byte data, but the process is partly statistical in nature, and * the results can not be guaranteed to always be correct. * <p> * For best accuracy in charset detection, the input data should be primarily * in a single language, and a minimum of a few hundred bytes worth of plain text * in the language are needed. The detection process will attempt to * ignore html or xml style markup that could otherwise obscure the content. * <p> * An alternative to the ICU Charset Detector is the * Compact Encoding Detector, https://github.com/google/compact_enc_det. * It often gives more accurate results, especially with short input samples. */ struct UCharsetDetector; /** * Structure representing a charset detector * @stable ICU 3.6 */ typedef struct UCharsetDetector UCharsetDetector; struct UCharsetMatch; /** * Opaque structure representing a match that was identified * from a charset detection operation. * @stable ICU 3.6 */ typedef struct UCharsetMatch UCharsetMatch; /** * Open a charset detector. * * @param status Any error conditions occurring during the open * operation are reported back in this variable. * @return the newly opened charset detector. * @stable ICU 3.6 */ U_STABLE UCharsetDetector * U_EXPORT2 ucsdet_open(UErrorCode *status); /** * Close a charset detector. All storage and any other resources * owned by this charset detector will be released. Failure to * close a charset detector when finished with it can result in * memory leaks in the application. * * @param ucsd The charset detector to be closed. * @stable ICU 3.6 */ U_STABLE void U_EXPORT2 ucsdet_close(UCharsetDetector *ucsd); #if U_SHOW_CPLUSPLUS_API U_NAMESPACE_BEGIN /** * \class LocalUCharsetDetectorPointer * "Smart pointer" class, closes a UCharsetDetector via ucsdet_close(). * For most methods see the LocalPointerBase base class. * * @see LocalPointerBase * @see LocalPointer * @stable ICU 4.4 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUCharsetDetectorPointer, UCharsetDetector, ucsdet_close); U_NAMESPACE_END #endif /** * Set the input byte data whose charset is to detected. * * Ownership of the input text byte array remains with the caller. * The input string must not be altered or deleted until the charset * detector is either closed or reset to refer to different input text. * * @param ucsd the charset detector to be used. * @param textIn the input text of unknown encoding. . * @param len the length of the input text, or -1 if the text * is NUL terminated. * @param status any error conditions are reported back in this variable. * * @stable ICU 3.6 */ U_STABLE void U_EXPORT2 ucsdet_setText(UCharsetDetector *ucsd, const char *textIn, int32_t len, UErrorCode *status); /** Set the declared encoding for charset detection. * The declared encoding of an input text is an encoding obtained * by the user from an http header or xml declaration or similar source that * can be provided as an additional hint to the charset detector. * * How and whether the declared encoding will be used during the * detection process is TBD. * * @param ucsd the charset detector to be used. * @param encoding an encoding for the current data obtained from * a header or declaration or other source outside * of the byte data itself. * @param length the length of the encoding name, or -1 if the name string * is NUL terminated. * @param status any error conditions are reported back in this variable. * * @stable ICU 3.6 */ U_STABLE void U_EXPORT2 ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t length, UErrorCode *status); /** * Return the charset that best matches the supplied input data. * * Note though, that because the detection * only looks at the start of the input data, * there is a possibility that the returned charset will fail to handle * the full set of input data. * <p> * The returned UCharsetMatch object is owned by the UCharsetDetector. * It will remain valid until the detector input is reset, or until * the detector is closed. * <p> * The function will fail if * <ul> * <li>no charset appears to match the data.</li> * <li>no input text has been provided</li> * </ul> * * @param ucsd the charset detector to be used. * @param status any error conditions are reported back in this variable. * @return a UCharsetMatch representing the best matching charset, * or NULL if no charset matches the byte data. * * @stable ICU 3.6 */ U_STABLE const UCharsetMatch * U_EXPORT2 ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status); /** * Find all charset matches that appear to be consistent with the input, * returning an array of results. The results are ordered with the * best quality match first. * * Because the detection only looks at a limited amount of the * input byte data, some of the returned charsets may fail to handle * the all of input data. * <p> * The returned UCharsetMatch objects are owned by the UCharsetDetector. * They will remain valid until the detector is closed or modified * * <p> * Return an error if * <ul> * <li>no charsets appear to match the input data.</li> * <li>no input text has been provided</li> * </ul> * * @param ucsd the charset detector to be used. * @param matchesFound pointer to a variable that will be set to the * number of charsets identified that are consistent with * the input data. Output only. * @param status any error conditions are reported back in this variable. * @return A pointer to an array of pointers to UCharSetMatch objects. * This array, and the UCharSetMatch instances to which it refers, * are owned by the UCharsetDetector, and will remain valid until * the detector is closed or modified. * @stable ICU 3.6 */ U_STABLE const UCharsetMatch ** U_EXPORT2 ucsdet_detectAll(UCharsetDetector *ucsd, int32_t *matchesFound, UErrorCode *status); /** * Get the name of the charset represented by a UCharsetMatch. * * The storage for the returned name string is owned by the * UCharsetMatch, and will remain valid while the UCharsetMatch * is valid. * * The name returned is suitable for use with the ICU conversion APIs. * * @param ucsm The charset match object. * @param status Any error conditions are reported back in this variable. * @return The name of the matching charset. * * @stable ICU 3.6 */ U_STABLE const char * U_EXPORT2 ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status); /** * Get a confidence number for the quality of the match of the byte * data with the charset. Confidence numbers range from zero to 100, * with 100 representing complete confidence and zero representing * no confidence. * * The confidence values are somewhat arbitrary. They define an * an ordering within the results for any single detection operation * but are not generally comparable between the results for different input. * * A confidence value of ten does have a general meaning - it is used * for charsets that can represent the input data, but for which there * is no other indication that suggests that the charset is the correct one. * Pure 7 bit ASCII data, for example, is compatible with a * great many charsets, most of which will appear as possible matches * with a confidence of 10. * * @param ucsm The charset match object. * @param status Any error conditions are reported back in this variable. * @return A confidence number for the charset match. * * @stable ICU 3.6 */ U_STABLE int32_t U_EXPORT2 ucsdet_getConfidence(const UCharsetMatch *ucsm, UErrorCode *status); /** * Get the RFC 3066 code for the language of the input data. * * The Charset Detection service is intended primarily for detecting * charsets, not language. For some, but not all, charsets, a language is * identified as a byproduct of the detection process, and that is what * is returned by this function. * * CAUTION: * 1. Language information is not available for input data encoded in * all charsets. In particular, no language is identified * for UTF-8 input data. * * 2. Closely related languages may sometimes be confused. * * If more accurate language detection is required, a linguistic * analysis package should be used. * * The storage for the returned name string is owned by the * UCharsetMatch, and will remain valid while the UCharsetMatch * is valid. * * @param ucsm The charset match object. * @param status Any error conditions are reported back in this variable. * @return The RFC 3066 code for the language of the input data, or * an empty string if the language could not be determined. * * @stable ICU 3.6 */ U_STABLE const char * U_EXPORT2 ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status); /** * Get the entire input text as a UChar string, placing it into * a caller-supplied buffer. A terminating * NUL character will be appended to the buffer if space is available. * * The number of UChars in the output string, not including the terminating * NUL, is returned. * * If the supplied buffer is smaller than required to hold the output, * the contents of the buffer are undefined. The full output string length * (in UChars) is returned as always, and can be used to allocate a buffer * of the correct size. * * * @param ucsm The charset match object. * @param buf A UChar buffer to be filled with the converted text data. * @param cap The capacity of the buffer in UChars. * @param status Any error conditions are reported back in this variable. * @return The number of UChars in the output string. * * @stable ICU 3.6 */ U_STABLE int32_t U_EXPORT2 ucsdet_getUChars(const UCharsetMatch *ucsm, UChar *buf, int32_t cap, UErrorCode *status); /** * Get an iterator over the set of all detectable charsets - * over the charsets that are known to the charset detection * service. * * The returned UEnumeration provides access to the names of * the charsets. * * <p> * The state of the Charset detector that is passed in does not * affect the result of this function, but requiring a valid, open * charset detector as a parameter insures that the charset detection * service has been safely initialized and that the required detection * data is available. * * <p> * <b>Note:</b> Multiple different charset encodings in a same family may use * a single shared name in this implementation. For example, this method returns * an array including "ISO-8859-1" (ISO Latin 1), but not including "windows-1252" * (Windows Latin 1). However, actual detection result could be "windows-1252" * when the input data matches Latin 1 code points with any points only available * in "windows-1252". * * @param ucsd a Charset detector. * @param status Any error conditions are reported back in this variable. * @return an iterator providing access to the detectable charset names. * @stable ICU 3.6 */ U_STABLE UEnumeration * U_EXPORT2 ucsdet_getAllDetectableCharsets(const UCharsetDetector *ucsd, UErrorCode *status); /** * Test whether input filtering is enabled for this charset detector. * Input filtering removes text that appears to be HTML or xml * markup from the input before applying the code page detection * heuristics. * * @param ucsd The charset detector to check. * @return TRUE if filtering is enabled. * @stable ICU 3.6 */ U_STABLE UBool U_EXPORT2 ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd); /** * Enable filtering of input text. If filtering is enabled, * text within angle brackets ("<" and ">") will be removed * before detection, which will remove most HTML or xml markup. * * @param ucsd the charset detector to be modified. * @param filter <code>true</code> to enable input text filtering. * @return The previous setting. * * @stable ICU 3.6 */ U_STABLE UBool U_EXPORT2 ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter); #ifndef U_HIDE_INTERNAL_API /** * Get an iterator over the set of detectable charsets - * over the charsets that are enabled by the specified charset detector. * * The returned UEnumeration provides access to the names of * the charsets. * * @param ucsd a Charset detector. * @param status Any error conditions are reported back in this variable. * @return an iterator providing access to the detectable charset names by * the specified charset detector. * @internal */ U_INTERNAL UEnumeration * U_EXPORT2 ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd, UErrorCode *status); /** * Enable or disable individual charset encoding. * A name of charset encoding must be included in the names returned by * {@link #ucsdet_getAllDetectableCharsets()}. * * @param ucsd a Charset detector. * @param encoding encoding the name of charset encoding. * @param enabled <code>TRUE</code> to enable, or <code>FALSE</code> to disable the * charset encoding. * @param status receives the return status. When the name of charset encoding * is not supported, U_ILLEGAL_ARGUMENT_ERROR is set. * @internal */ U_INTERNAL void U_EXPORT2 ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool enabled, UErrorCode *status); #endif /* U_HIDE_INTERNAL_API */ #endif #endif /* __UCSDET_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
alphaindex.h | File | 26.27 KB | 0644 |
|
appendable.h | File | 8.43 KB | 0644 |
|
basictz.h | File | 8.84 KB | 0644 |
|
brkiter.h | File | 27.54 KB | 0644 |
|
bytestream.h | File | 9.59 KB | 0644 |
|
bytestrie.h | File | 19.26 KB | 0644 |
|
bytestriebuilder.h | File | 7.1 KB | 0644 |
|
calendar.h | File | 105.35 KB | 0644 |
|
caniter.h | File | 7.35 KB | 0644 |
|
casemap.h | File | 25.31 KB | 0644 |
|
char16ptr.h | File | 7.29 KB | 0644 |
|
chariter.h | File | 24 KB | 0644 |
|
choicfmt.h | File | 23.85 KB | 0644 |
|
coleitr.h | File | 13.7 KB | 0644 |
|
coll.h | File | 55.61 KB | 0644 |
|
compactdecimalformat.h | File | 16.58 KB | 0644 |
|
curramt.h | File | 3.69 KB | 0644 |
|
currpinf.h | File | 7.08 KB | 0644 |
|
currunit.h | File | 3.49 KB | 0644 |
|
datefmt.h | File | 40.18 KB | 0644 |
|
dbbi.h | File | 1.11 KB | 0644 |
|
dcfmtsym.h | File | 17.66 KB | 0644 |
|
decimfmt.h | File | 89.73 KB | 0644 |
|
docmain.h | File | 6.56 KB | 0644 |
|
dtfmtsym.h | File | 37.64 KB | 0644 |
|
dtintrv.h | File | 3.76 KB | 0644 |
|
dtitvfmt.h | File | 42.87 KB | 0644 |
|
dtitvinf.h | File | 18.46 KB | 0644 |
|
dtptngen.h | File | 23.72 KB | 0644 |
|
dtrule.h | File | 8.62 KB | 0644 |
|
edits.h | File | 15.54 KB | 0644 |
|
enumset.h | File | 2.05 KB | 0644 |
|
errorcode.h | File | 4.78 KB | 0644 |
|
fieldpos.h | File | 8.63 KB | 0644 |
|
filteredbrk.h | File | 5.46 KB | 0644 |
|
fmtable.h | File | 24.39 KB | 0644 |
|
format.h | File | 12.44 KB | 0644 |
|
fpositer.h | File | 3.14 KB | 0644 |
|
gender.h | File | 3.18 KB | 0644 |
|
gregocal.h | File | 31.57 KB | 0644 |
|
icudataver.h | File | 1.03 KB | 0644 |
|
icuplug.h | File | 11.86 KB | 0644 |
|
idna.h | File | 12.63 KB | 0644 |
|
listformatter.h | File | 4.98 KB | 0644 |
|
localpointer.h | File | 18.19 KB | 0644 |
|
locdspnm.h | File | 7.05 KB | 0644 |
|
locid.h | File | 31.4 KB | 0644 |
|
measfmt.h | File | 11.25 KB | 0644 |
|
measunit.h | File | 37.74 KB | 0644 |
|
measure.h | File | 4.26 KB | 0644 |
|
messagepattern.h | File | 33.64 KB | 0644 |
|
msgfmt.h | File | 43.16 KB | 0644 |
|
normalizer2.h | File | 33.97 KB | 0644 |
|
normlzr.h | File | 30.74 KB | 0644 |
|
nounit.h | File | 2.6 KB | 0644 |
|
numberformatter.h | File | 64.98 KB | 0644 |
|
numfmt.h | File | 47.76 KB | 0644 |
|
numsys.h | File | 6.73 KB | 0644 |
|
parseerr.h | File | 3.08 KB | 0644 |
|
parsepos.h | File | 5.45 KB | 0644 |
|
platform.h | File | 27.71 KB | 0644 |
|
plurfmt.h | File | 25.66 KB | 0644 |
|
plurrule.h | File | 18.34 KB | 0644 |
|
ptypes.h | File | 3.47 KB | 0644 |
|
putil.h | File | 6.34 KB | 0644 |
|
rbbi.h | File | 27.09 KB | 0644 |
|
rbnf.h | File | 49.76 KB | 0644 |
|
rbtz.h | File | 15.47 KB | 0644 |
|
regex.h | File | 84.91 KB | 0644 |
|
region.h | File | 9.12 KB | 0644 |
|
reldatefmt.h | File | 14.3 KB | 0644 |
|
rep.h | File | 9.5 KB | 0644 |
|
resbund.h | File | 18.01 KB | 0644 |
|
schriter.h | File | 6.26 KB | 0644 |
|
scientificnumberformatter.h | File | 6.59 KB | 0644 |
|
search.h | File | 22.21 KB | 0644 |
|
selfmt.h | File | 14.24 KB | 0644 |
|
simpleformatter.h | File | 11.43 KB | 0644 |
|
simpletz.h | File | 45.24 KB | 0644 |
|
smpdtfmt.h | File | 70.09 KB | 0644 |
|
sortkey.h | File | 11.12 KB | 0644 |
|
std_string.h | File | 1015 B | 0644 |
|
strenum.h | File | 10.04 KB | 0644 |
|
stringoptions.h | File | 5.89 KB | 0644 |
|
stringpiece.h | File | 6.46 KB | 0644 |
|
stringtriebuilder.h | File | 15.2 KB | 0644 |
|
stsearch.h | File | 21.29 KB | 0644 |
|
symtable.h | File | 4.21 KB | 0644 |
|
tblcoll.h | File | 36.4 KB | 0644 |
|
timezone.h | File | 40.83 KB | 0644 |
|
tmunit.h | File | 3.29 KB | 0644 |
|
tmutamt.h | File | 4.8 KB | 0644 |
|
tmutfmt.h | File | 7.79 KB | 0644 |
|
translit.h | File | 54.53 KB | 0644 |
|
tzfmt.h | File | 42.81 KB | 0644 |
|
tznames.h | File | 16.79 KB | 0644 |
|
tzrule.h | File | 35.32 KB | 0644 |
|
tztrans.h | File | 6.07 KB | 0644 |
|
ubidi.h | File | 89.28 KB | 0644 |
|
ubiditransform.h | File | 12.71 KB | 0644 |
|
ubrk.h | File | 24.08 KB | 0644 |
|
ucal.h | File | 54.56 KB | 0644 |
|
ucasemap.h | File | 15.18 KB | 0644 |
|
ucat.h | File | 5.36 KB | 0644 |
|
uchar.h | File | 131.61 KB | 0644 |
|
ucharstrie.h | File | 21.06 KB | 0644 |
|
ucharstriebuilder.h | File | 7.14 KB | 0644 |
|
uchriter.h | File | 13.14 KB | 0644 |
|
uclean.h | File | 11.24 KB | 0644 |
|
ucnv.h | File | 83.06 KB | 0644 |
|
ucnv_cb.h | File | 6.59 KB | 0644 |
|
ucnv_err.h | File | 20.98 KB | 0644 |
|
ucnvsel.h | File | 6.14 KB | 0644 |
|
ucol.h | File | 61.36 KB | 0644 |
|
ucoleitr.h | File | 9.46 KB | 0644 |
|
uconfig.h | File | 11.91 KB | 0644 |
|
ucsdet.h | File | 14.67 KB | 0644 |
|
ucurr.h | File | 15.15 KB | 0644 |
|
udat.h | File | 60.13 KB | 0644 |
|
udata.h | File | 15.53 KB | 0644 |
|
udateintervalformat.h | File | 6.79 KB | 0644 |
|
udatpg.h | File | 24.11 KB | 0644 |
|
udisplaycontext.h | File | 5.89 KB | 0644 |
|
uenum.h | File | 7.9 KB | 0644 |
|
ufieldpositer.h | File | 4.36 KB | 0644 |
|
uformattable.h | File | 10.94 KB | 0644 |
|
ugender.h | File | 2 KB | 0644 |
|
uidna.h | File | 33.37 KB | 0644 |
|
uiter.h | File | 22.77 KB | 0644 |
|
uldnames.h | File | 10.45 KB | 0644 |
|
ulistformatter.h | File | 4.54 KB | 0644 |
|
uloc.h | File | 50.75 KB | 0644 |
|
ulocdata.h | File | 11.26 KB | 0644 |
|
umachine.h | File | 13.1 KB | 0644 |
|
umisc.h | File | 1.33 KB | 0644 |
|
umsg.h | File | 24.23 KB | 0644 |
|
unifilt.h | File | 3.63 KB | 0644 |
|
unifunct.h | File | 3.98 KB | 0644 |
|
unimatch.h | File | 6.04 KB | 0644 |
|
unirepl.h | File | 3.32 KB | 0644 |
|
uniset.h | File | 63.98 KB | 0644 |
|
unistr.h | File | 175.65 KB | 0644 |
|
unorm.h | File | 20.45 KB | 0644 |
|
unorm2.h | File | 24.66 KB | 0644 |
|
unum.h | File | 52.49 KB | 0644 |
|
unumsys.h | File | 7.14 KB | 0644 |
|
uobject.h | File | 10.72 KB | 0644 |
|
upluralrules.h | File | 6.77 KB | 0644 |
|
uregex.h | File | 72.05 KB | 0644 |
|
uregion.h | File | 9.84 KB | 0644 |
|
ureldatefmt.h | File | 12.22 KB | 0644 |
|
urename.h | File | 124.49 KB | 0644 |
|
urep.h | File | 5.38 KB | 0644 |
|
ures.h | File | 36.52 KB | 0644 |
|
uscript.h | File | 25.91 KB | 0644 |
|
usearch.h | File | 38.14 KB | 0644 |
|
uset.h | File | 39.91 KB | 0644 |
|
usetiter.h | File | 9.49 KB | 0644 |
|
ushape.h | File | 18 KB | 0644 |
|
uspoof.h | File | 64.9 KB | 0644 |
|
usprep.h | File | 8.13 KB | 0644 |
|
ustdio.h | File | 38.54 KB | 0644 |
|
ustream.h | File | 1.8 KB | 0644 |
|
ustring.h | File | 72.52 KB | 0644 |
|
ustringtrie.h | File | 3.15 KB | 0644 |
|
utext.h | File | 58.11 KB | 0644 |
|
utf.h | File | 7.86 KB | 0644 |
|
utf16.h | File | 22.49 KB | 0644 |
|
utf32.h | File | 763 B | 0644 |
|
utf8.h | File | 28.16 KB | 0644 |
|
utf_old.h | File | 43.78 KB | 0644 |
|
utmscale.h | File | 13.78 KB | 0644 |
|
utrace.h | File | 13.89 KB | 0644 |
|
utrans.h | File | 25.53 KB | 0644 |
|
utypes.h | File | 29.92 KB | 0644 |
|
uvernum.h | File | 5.69 KB | 0644 |
|
uversion.h | File | 6.4 KB | 0644 |
|
vtzone.h | File | 20.17 KB | 0644 |
|