15#include <rtl/textenc.h>
21 const std::u16string_view msLangStr;
22 rtl_TextEncoding meTextEncoding;
26rtl_TextEncoding impl_getWinTextEncodingFromLangStrANSI(
const OUString& sLanguage)
28 static constexpr LangEncodingDef aLanguageTab[] =
30 {
u"en", RTL_TEXTENCODING_MS_1252 },
31 {
u"th", RTL_TEXTENCODING_MS_874 },
32 {
u"ja", RTL_TEXTENCODING_MS_932 },
33 {
u"zh-cn", RTL_TEXTENCODING_MS_936 },
34 {
u"ko", RTL_TEXTENCODING_MS_949 },
35 {
u"zh", RTL_TEXTENCODING_MS_950 },
36 {
u"bs", RTL_TEXTENCODING_MS_1250 },
37 {
u"cs", RTL_TEXTENCODING_MS_1250 },
38 {
u"hr", RTL_TEXTENCODING_MS_1250 },
39 {
u"hu", RTL_TEXTENCODING_MS_1250 },
40 {
u"pl", RTL_TEXTENCODING_MS_1250 },
41 {
u"ro", RTL_TEXTENCODING_MS_1250 },
42 {
u"sk", RTL_TEXTENCODING_MS_1250 },
43 {
u"sl", RTL_TEXTENCODING_MS_1250 },
45 {
u"sq", RTL_TEXTENCODING_MS_1250 },
46 {
u"be", RTL_TEXTENCODING_MS_1251 },
47 {
u"bg", RTL_TEXTENCODING_MS_1251 },
48 {
u"mk", RTL_TEXTENCODING_MS_1251 },
49 {
u"ru", RTL_TEXTENCODING_MS_1251 },
50 {
u"sr", RTL_TEXTENCODING_MS_1251 },
51 {
u"uk", RTL_TEXTENCODING_MS_1251 },
52 {
u"es", RTL_TEXTENCODING_MS_1252 },
53 {
u"el", RTL_TEXTENCODING_MS_1253 },
54 {
u"tr", RTL_TEXTENCODING_MS_1254 },
55 {
u"he", RTL_TEXTENCODING_MS_1255 },
56 {
u"ar", RTL_TEXTENCODING_MS_1256 },
57 {
u"et", RTL_TEXTENCODING_MS_1257 },
58 {
u"lt", RTL_TEXTENCODING_MS_1257 },
59 {
u"lv", RTL_TEXTENCODING_MS_1257 },
60 {
u"vi", RTL_TEXTENCODING_MS_1258 },
63 for (
auto& def : aLanguageTab)
65 if (sLanguage.startsWithIgnoreAsciiCase(def.msLangStr))
66 return def.meTextEncoding;
69 return RTL_TEXTENCODING_MS_1252;
76rtl_TextEncoding impl_getWinTextEncodingFromLangStrOEM(
const OUString& sLanguage)
78 static constexpr LangEncodingDef aLanguageTab[] =
80 {
u"de", RTL_TEXTENCODING_IBM_437 },
81 {
u"en-us", RTL_TEXTENCODING_IBM_437 },
82 {
u"fi", RTL_TEXTENCODING_IBM_437 },
83 {
u"fr-ca", RTL_TEXTENCODING_IBM_863 },
84 {
u"fr", RTL_TEXTENCODING_IBM_437 },
85 {
u"it", RTL_TEXTENCODING_IBM_437 },
86 {
u"nl", RTL_TEXTENCODING_IBM_437 },
87 {
u"sv", RTL_TEXTENCODING_IBM_437 },
88 {
u"el", RTL_TEXTENCODING_IBM_737 },
89 {
u"et", RTL_TEXTENCODING_IBM_775 },
90 {
u"lt", RTL_TEXTENCODING_IBM_775 },
91 {
u"lv", RTL_TEXTENCODING_IBM_775 },
92 {
u"en", RTL_TEXTENCODING_IBM_850 },
93 {
u"bs", RTL_TEXTENCODING_IBM_852 },
94 {
u"cs", RTL_TEXTENCODING_IBM_852 },
95 {
u"hr", RTL_TEXTENCODING_IBM_852 },
96 {
u"hu", RTL_TEXTENCODING_IBM_852 },
97 {
u"pl", RTL_TEXTENCODING_IBM_852 },
98 {
u"ro", RTL_TEXTENCODING_IBM_852 },
99 {
u"sk", RTL_TEXTENCODING_IBM_852 },
100 {
u"sl", RTL_TEXTENCODING_IBM_852 },
102 {
u"bg", RTL_TEXTENCODING_IBM_855 },
103 {
u"mk", RTL_TEXTENCODING_IBM_855 },
104 {
u"sr", RTL_TEXTENCODING_IBM_855 },
105 {
u"tr", RTL_TEXTENCODING_IBM_857 },
106 {
u"pt", RTL_TEXTENCODING_IBM_860 },
107 {
u"is", RTL_TEXTENCODING_IBM_861 },
108 {
u"he", RTL_TEXTENCODING_IBM_862 },
109 {
u"ar", RTL_TEXTENCODING_IBM_864 },
110 {
u"da", RTL_TEXTENCODING_IBM_865 },
111 {
u"nn", RTL_TEXTENCODING_IBM_865 },
112 {
u"be", RTL_TEXTENCODING_IBM_866 },
113 {
u"ru", RTL_TEXTENCODING_IBM_866 },
114 {
u"uk", RTL_TEXTENCODING_IBM_866 },
115 {
u"th", RTL_TEXTENCODING_MS_874 },
116 {
u"ja", RTL_TEXTENCODING_MS_932 },
117 {
u"zh-cn", RTL_TEXTENCODING_MS_936 },
118 {
u"ko", RTL_TEXTENCODING_MS_949 },
119 {
u"zh", RTL_TEXTENCODING_MS_950 },
120 {
u"vi", RTL_TEXTENCODING_MS_1258 },
123 for (
auto& def : aLanguageTab)
125 if (sLanguage.startsWithIgnoreAsciiCase(def.msLangStr))
126 return def.meTextEncoding;
129 return RTL_TEXTENCODING_IBM_850;
137 impl_getWinTextEncodingFromLangStrOEM(sLanguage) :
138 impl_getWinTextEncodingFromLangStrANSI(sLanguage);
rtl_TextEncoding utl_getWinTextEncodingFromLangStr(const OUString &sLanguage, bool bOEM)
Map from an ISO-639 language code (and optionally ISO-3166 country/region code) to a text encoding of...