MCPcopy Create free account
hub / github.com/OSGeo/gdal / CPLRecode

Function CPLRecode

port/cpl_recode.cpp:79–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77 */
78
79char CPL_DLL *CPLRecode(const char *pszSource, const char *pszSrcEncoding,
80 const char *pszDstEncoding)
81
82{
83 /* -------------------------------------------------------------------- */
84 /* Handle a few common short cuts. */
85 /* -------------------------------------------------------------------- */
86 if (EQUAL(pszSrcEncoding, pszDstEncoding))
87 return CPLStrdup(pszSource);
88
89 if (EQUAL(pszSrcEncoding, CPL_ENC_ASCII) &&
90 (EQUAL(pszDstEncoding, CPL_ENC_UTF8) ||
91 EQUAL(pszDstEncoding, CPL_ENC_ISO8859_1)))
92 return CPLStrdup(pszSource);
93
94 // A few hard coded CPxxx/ISO-8859-x to UTF-8 tables
95 if (EQUAL(pszDstEncoding, CPL_ENC_UTF8) &&
96 CPLGetConversionTableToUTF8(pszSrcEncoding))
97 {
98 return CPLRecodeStub(pszSource, pszSrcEncoding, pszDstEncoding);
99 }
100
101#ifdef CPL_RECODE_ICONV
102 /* -------------------------------------------------------------------- */
103 /* CPL_ENC_ISO8859_1 -> CPL_ENC_UTF8 */
104 /* and CPL_ENC_UTF8 -> CPL_ENC_ISO8859_1 conversions are handled */
105 /* very well by the stub implementation which is faster than the */
106 /* iconv() route. Use a stub for these two ones and iconv() */
107 /* everything else. */
108 /* -------------------------------------------------------------------- */
109 if ((EQUAL(pszSrcEncoding, CPL_ENC_ISO8859_1) &&
110 EQUAL(pszDstEncoding, CPL_ENC_UTF8)) ||
111 (EQUAL(pszSrcEncoding, CPL_ENC_UTF8) &&
112 EQUAL(pszDstEncoding, CPL_ENC_ISO8859_1)))
113 {
114 return CPLRecodeStub(pszSource, pszSrcEncoding, pszDstEncoding);
115 }
116#ifdef _WIN32
117 else if (((EQUAL(pszSrcEncoding, "CP_ACP") ||
118 EQUAL(pszSrcEncoding, "CP_OEMCP")) &&
119 EQUAL(pszDstEncoding, CPL_ENC_UTF8)) ||
120 (EQUAL(pszSrcEncoding, CPL_ENC_UTF8) &&
121 (EQUAL(pszDstEncoding, "CP_ACP") ||
122 EQUAL(pszDstEncoding, "CP_OEMCP"))))
123 {
124 return CPLRecodeStub(pszSource, pszSrcEncoding, pszDstEncoding);
125 }
126#endif
127 else
128 {
129 return CPLRecodeIconv(pszSource, pszSrcEncoding, pszDstEncoding);
130 }
131#else // CPL_RECODE_STUB
132 return CPLRecodeStub(pszSource, pszSrcEncoding, pszDstEncoding);
133#endif // CPL_RECODE_ICONV
134}
135
136/************************************************************************/

Callers 15

OpenMethod · 0.85
ReadVECMethod · 0.85
ReadTableMethod · 0.85
CADRecodeFunction · 0.85
GetNextFeatureMethod · 0.85
OpenMethod · 0.85
OpenMethod · 0.85
MMInitLayerByTypeFunction · 0.85
MMWriteMetadataFileFunction · 0.85
GetFeatureMethod · 0.85
TranslateFieldsToMMMethod · 0.85

Calls 5

CPLStrdupFunction · 0.85
CPLRecodeStubFunction · 0.85
CPLRecodeIconvFunction · 0.85
EQUALFunction · 0.50

Tested by 1

TEST_FFunction · 0.68