summaryrefslogtreecommitdiff
path: root/Software/uchardet.mdwn
blob: 57b6986c9fc92001ea49233377197c1e14dec3df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# uchardet

[[uchardet|https://www.freedesktop.org/wiki/Software/uchardet/]] is an encoding detector library, which takes a sequence of bytes in an unknown character encoding without any additional information, and attempts to determine the encoding of the text. Returned encoding names are [[iconv|https://www.gnu.org/software/libiconv/]]-compatible.

uchardet started as a C language binding of the original C++ implementation of the universal charset detection library by Mozilla. It can now detect more charsets, and more reliably than the original implementation.

The original code of universalchardet is available at <http://lxr.mozilla.org/seamonkey/source/extensions/universalchardet/>

Techniques used by universalchardet are described at <http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html>

Report bugs and contribute patches at (check opened bugs first): <https://gitlab.freedesktop.org/uchardet/uchardet/-/issues>

Last release: [uchardet version 0.0.7](https://www.freedesktop.org/software/uchardet/releases/) ([release note](https://gitlab.freedesktop.org/uchardet/uchardet/-/releases/v0.0.7), [git repository for dev code](https://gitlab.freedesktop.org/uchardet/uchardet.git))

## Supported Languages/Encodings

  * International (Unicode)
    * UTF-8
    * UTF-16BE / UTF-16LE
    * UTF-32BE / UTF-32LE / X-ISO-10646-UCS-4-34121 / X-ISO-10646-UCS-4-21431
  * Arabic
    * ISO-8859-6
    * WINDOWS-1256
  * Bulgarian
    * ISO-8859-5
    * WINDOWS-1251
  * Chinese
    * ISO-2022-CN
    * BIG5
    * EUC-TW
    * GB18030
    * HZ-GB-2312
  * Croatian:
    * ISO-8859-2
    * ISO-8859-13
    * ISO-8859-16
    * Windows-1250
    * IBM852
    * MAC-CENTRALEUROPE
  * Czech
    * Windows-1250
    * ISO-8859-2
    * IBM852
    * MAC-CENTRALEUROPE
  * Danish
    * ISO-8859-1
    * ISO-8859-15
    * WINDOWS-1252
  * English
    * ASCII
  * Esperanto
    * ISO-8859-3
  * Estonian
    * ISO-8859-4
    * ISO-8859-13
    * ISO-8859-13
    * Windows-1252
    * Windows-1257
  * Finnish
    * ISO-8859-1
    * ISO-8859-4
    * ISO-8859-9
    * ISO-8859-13
    * ISO-8859-15
    * WINDOWS-1252
  * French
    * ISO-8859-1
    * ISO-8859-15
    * WINDOWS-1252
  * German
    * ISO-8859-1
    * WINDOWS-1252
  * Greek
    * ISO-8859-7
    * WINDOWS-1253
  * Hebrew
    * ISO-8859-8
    * WINDOWS-1255
  * Hungarian:
    * ISO-8859-2
    * WINDOWS-1250
  * Irish Gaelic
    * ISO-8859-1
    * ISO-8859-9
    * ISO-8859-15
    * WINDOWS-1252
  * Italian
    * ISO-8859-1
    * ISO-8859-3
    * ISO-8859-9
    * ISO-8859-15
    * WINDOWS-1252
  * Japanese
    * ISO-2022-JP
    * SHIFT_JIS
    * EUC-JP
  * Korean
    * ISO-2022-KR
    * EUC-KR / UHC
  * Lithuanian
    * ISO-8859-4
    * ISO-8859-10
    * ISO-8859-13
  * Latvian
    * ISO-8859-4
    * ISO-8859-10
    * ISO-8859-13
  * Maltese
    * ISO-8859-3
  * Polish:
    * ISO-8859-2
    * ISO-8859-13
    * ISO-8859-16
    * Windows-1250
    * IBM852
    * MAC-CENTRALEUROPE
  * Portuguese
    * ISO-8859-1
    * ISO-8859-9
    * ISO-8859-15
    * WINDOWS-1252
  * Romanian:
    * ISO-8859-2
    * ISO-8859-16
    * Windows-1250
    * IBM852
  * Russian
    * ISO-8859-5
    * KOI8-R
    * WINDOWS-1251
    * MAC-CYRILLIC
    * IBM866
    * IBM855
  * Slovak
    * Windows-1250
    * ISO-8859-2
    * IBM852
    * MAC-CENTRALEUROPE
  * Slovene
    * ISO-8859-2
    * ISO-8859-16
    * Windows-1250
    * IBM852
    * MAC-CENTRALEUROPE
  * Spanish
    * ISO-8859-1
    * ISO-8859-15
    * WINDOWS-1252
  * Swedish
    * ISO-8859-1
    * ISO-8859-4
    * ISO-8859-9
    * ISO-8859-15
    * WINDOWS-1252
  * Thai
    * TIS-620
    * ISO-8859-11
  * Turkish:
    * ISO-8859-3
    * ISO-8859-9
  * Vietnamese:
    * VISCII
    * Windows-1258
  * Others
    * WINDOWS-1252

## Installation

### Debian/Ubuntu/Mint

    apt-get install uchardet libuchardet-dev

### Mageia

    urpmi libuchardet libuchardet-devel

### Fedora

    dnf install uchardet uchardet-devel

### Gentoo

    emerge uchardet

### Mac

    brew install uchardet

### Windows

Binary packages are provided in Fedora and Msys2 repositories. There may
exist other pre-built packages but I am not aware of them.
Nevertheless the library is very easily and quickly compilable under
Windows as well, so finding a binary package is not necessary.
Some did it successfully with the [CMake Windows
installer](https://cmake.org/download/) and MinGW. It should be possible
to use MinGW-w64 instead of MinGW, in particular to build both 32 and
64-bit DLL libraries).

Note also that it is very easily cross-buildable (for instance from a
GNU/Linux machine).

### Build from source

Releases are available from:
<https://www.freedesktop.org/software/uchardet/releases/>

If you prefer a development version, clone the git repository:

    git clone https://gitlab.freedesktop.org/uchardet/uchardet.git

The source can be browsed at: <https://gitlab.freedesktop.org/uchardet/uchardet>

    cmake .
    make
    make install

### Build with flatpak-builder

Here is a working "module" section to include in your Flatpak's json manifest:

    "modules": [
        {
            "name": "uchardet",
            "buildsystem": "cmake",
            "builddir": true,
            "config-opts": [ "-DCMAKE_INSTALL_LIBDIR=lib" ],
            "sources": [
                {
                    ...
                }
            ]
        }
    ]

## Usage

### Command Line

    uchardet Command Line Tool Version 0.0.7
    Authors: BYVoid, Jehan
    Bug Report: https://gitlab.freedesktop.org/uchardet/uchardet/-/issues
    
    Usage: uchardet [Options] [File]...
    
    Options:
     -v, --version Print version and build information.
     -h, --help Print this help.

### Library

See [[uchardet.h|https://cgit.freedesktop.org/uchardet/uchardet/tree/src/uchardet.h]]

## Related Projects

  * [[python-chardet|https://github.com/chardet/chardet]] Python port
  * [[ruby-rchardet|http://rubyforge.org/projects/chardet/]] Ruby port
  * [[juniversalchardet|http://code.google.com/p/juniversalchardet/]] Java port of universalchardet
  * [[jchardet|http://jchardet.sourceforge.net/]] Java port of chardet
  * [[nuniversalchardet|http://code.google.com/p/nuniversalchardet/]] C# port of universalchardet
  * [[nchardet|http://www.conceptdevelopment.net/Localization/NCharDet/]] C# port of chardet
  * [[uchardet-enhanced|https://bitbucket.org/medoc/uchardet-enhanced]] A fork of mozilla universalchardet
  * [[rust-uchardet|https://github.com/emk/rust-uchardet]] Rust language binding of uchardet
  * [[libchardet|https://ftp.oops.org/pub/oops/libchardet/]] Another C/C++ API wrapping Mozilla code.

## License

* [[Mozilla Public License Version 1.1|http://www.mozilla.org/MPL/1.1/]]
* [[GNU General Public License, version 2.0|http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html]] or later
* [[GNU Lesser General Public License, version 2.1|http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html]] or later.

See the file [COPYING](https://cgit.freedesktop.org/uchardet/uchardet/tree/COPYING) for the complete text of these 3 licenses.

## Code of Conduct

The `uchardet` project is hosted by [freedesktop.org](https://www.freedesktop.org/)
and as such follows its code of conduct. In other words, it means we
will treat anyone with respect and expect anyone to do the same.

Please read [freedesktop.org Code of Conduct](https://www.freedesktop.org/wiki/CodeOfConduct).

In case of any problem regarding abusive behavior in uchardet project,
please contact the maintainer (Jehan) or create a bug report (possibly
private if needed).