f37821851e
* Fixed issue introduced in hrev38139: restoring from the line drawing table was hard-coded to UTF8 Ground table. That is wrong: the table for currently configured encoding must be set back. Please look on using of _GuessGroundTable() for details; * Fixed issue introduced in hrev34894: the semantic of convert_xx_utf8 functions requires the destination length to be set equal to the target buffer size. Pre-hrev34894 usage of "homebrew" conversion functions was a bit different - destination length was set to 0. This made any converstions of input data useless and produce no visual results; * Private list of supported encodings (Encoding.cpp) was replaced by using BPrivate::BCharacterSetRoster functionality. That allows to use centralized info about encodings in unified with other applications (Mail & StyledEdit for example) way. Most of currently enumerated in UTF8.h encodings now available in Terminal. Note that UCS-2 and UTF-16 are temporary (???) excluded from the list of encodings supported by Terminal. * The B_UTF16_CONVERSION was added in system-wide UTF8.h declarations. This character set is available for enumerating by BCharacterSetRoster but not listed in public API. Looks like it was just missed; * Special note about "Text Encoding" entry in Preference File: So known "shortname" of encoding was used in the preferences file. For details look on the encodings list in previous version of Encoding.cpp. As result of migrating to BCharacterSet-provided resources this list was deleted and is not available anymore. Instead of it the IANA name of the character encoding targeted to be used for this purposes. Frankly speaking this part looks like not working at the moment. The value of text encoding is hardcoded to "UTF-8" now and is not affected by any operations in Terminal menu. Note that "shortname" for default encoding was "UTF8" but the saved value is "UTF-8" - and they are looking not dependent at all. So this change should not introduce any kind of backward incompatibility.
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
/*
|
|
* Copyright 2007, Haiku, Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _UTF8_H
|
|
#define _UTF8_H
|
|
|
|
|
|
#include <BeBuild.h>
|
|
#include <InterfaceDefs.h>
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
// Conversion Flavors
|
|
enum {
|
|
B_ISO1_CONVERSION, // ISO 8859-x
|
|
B_ISO2_CONVERSION,
|
|
B_ISO3_CONVERSION,
|
|
B_ISO4_CONVERSION,
|
|
B_ISO5_CONVERSION,
|
|
B_ISO6_CONVERSION,
|
|
B_ISO7_CONVERSION,
|
|
B_ISO8_CONVERSION,
|
|
B_ISO9_CONVERSION,
|
|
B_ISO10_CONVERSION,
|
|
B_MAC_ROMAN_CONVERSION, // Macintosh Roman
|
|
B_SJIS_CONVERSION, // Shift-JIS
|
|
B_EUC_CONVERSION, // EUC Packed Japanese
|
|
B_JIS_CONVERSION, // JIS X 0208-1990
|
|
B_MS_WINDOWS_CONVERSION, // Windows Latin-1 Codepage 1252
|
|
B_UNICODE_CONVERSION, // Unicode 2.0, UCS-2
|
|
B_KOI8R_CONVERSION, // KOI8-R
|
|
B_MS_WINDOWS_1251_CONVERSION, // Windows Cyrillic Codepage 1251
|
|
B_MS_DOS_866_CONVERSION, // MS-DOS Codepage 866
|
|
B_MS_DOS_CONVERSION, // MS-DOS Codepage 437
|
|
B_EUC_KR_CONVERSION, // EUC Korean
|
|
B_ISO13_CONVERSION,
|
|
B_ISO14_CONVERSION,
|
|
B_ISO15_CONVERSION,
|
|
B_BIG5_CONVERSION, // Chinese Big5
|
|
B_GBK_CONVERSION, // Chinese GB18030
|
|
B_UTF16_CONVERSION // Unicode UTF-16
|
|
};
|
|
|
|
|
|
// Conversion Functions
|
|
|
|
#ifdef __cplusplus
|
|
|
|
status_t convert_to_utf8(uint32 sourceEncoding, const char* source,
|
|
int32* sourceLength, char* dest, int32* destLength, int32* state,
|
|
char substitute = B_SUBSTITUTE);
|
|
|
|
status_t convert_from_utf8(uint32 destEncoding, const char* source,
|
|
int32* sourceLength, char* dest, int32* destLength, int32* state,
|
|
char substitute = B_SUBSTITUTE);
|
|
|
|
#endif
|
|
|
|
#endif /* _UTF8_H */
|