wchar_t *CPLRecodeToWCharIconv( const char *pszSource, const char *pszSrcEncoding, const char *pszDstEncoding ) { return (wchar_t *)CPLRecodeIconv( pszSource, pszSrcEncoding, pszDstEncoding); }
char CPL_DLL *CPLRecode( const char *pszSource, const char *pszSrcEncoding, const char *pszDstEncoding ) { /* -------------------------------------------------------------------- */ /* Handle a few common short cuts. */ /* -------------------------------------------------------------------- */ if ( EQUAL(pszSrcEncoding, pszDstEncoding) ) return CPLStrdup(pszSource); if ( EQUAL(pszSrcEncoding, CPL_ENC_ASCII) && ( EQUAL(pszDstEncoding, CPL_ENC_UTF8) || EQUAL(pszDstEncoding, CPL_ENC_ISO8859_1) ) ) return CPLStrdup(pszSource); #ifdef CPL_RECODE_ICONV /* -------------------------------------------------------------------- */ /* CPL_ENC_ISO8859_1 -> CPL_ENC_UTF8 */ /* and CPL_ENC_UTF8 -> CPL_ENC_ISO8859_1 conversions are hadled */ /* very well by the stub implementation which is faster than the */ /* iconv() route. Use a stub for these two ones and iconv() */ /* everything else. */ /* -------------------------------------------------------------------- */ if ( ( EQUAL(pszSrcEncoding, CPL_ENC_ISO8859_1) && EQUAL(pszDstEncoding, CPL_ENC_UTF8) ) || ( EQUAL(pszSrcEncoding, CPL_ENC_UTF8) && EQUAL(pszDstEncoding, CPL_ENC_ISO8859_1) ) ) { return CPLRecodeStub( pszSource, pszSrcEncoding, pszDstEncoding ); } else { return CPLRecodeIconv( pszSource, pszSrcEncoding, pszDstEncoding ); } #else /* CPL_RECODE_STUB */ return CPLRecodeStub( pszSource, pszSrcEncoding, pszDstEncoding ); #endif /* CPL_RECODE_ICONV */ }