aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-10-29 00:04:29 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-10-29 00:04:29 -0700
commit2f6f1ca69d59e2692f85d56941e7d996195cd6e8 (patch)
tree7cf5be8a099a257d02af225db0c1606e33977127
parent366ec59181998f669c5cd7823e66a7c302199ad1 (diff)
Improved charset handling
-rw-r--r--src/core/basetypes/MCString.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/core/basetypes/MCString.cc b/src/core/basetypes/MCString.cc
index e4225347..e5639ab0 100644
--- a/src/core/basetypes/MCString.cc
+++ b/src/core/basetypes/MCString.cc
@@ -1275,6 +1275,15 @@ void String::appendBytes(const char * bytes, unsigned int length, const char * c
else {
CFStringRef encodingName = CFStringCreateWithCString(NULL, charset, kCFStringEncodingUTF8);
encoding = CFStringConvertIANACharSetNameToEncoding(encodingName);
+ if (encoding == kCFStringEncodingBig5) {
+ encoding = kCFStringEncodingBig5_HKSCS_1999;
+ }
+ if (encoding == kCFStringEncodingGBK_95) {
+ encoding = kCFStringEncodingGB_18030_2000;
+ }
+ if (encoding == kCFStringEncodingGB_2312_80) {
+ encoding = kCFStringEncodingGB_18030_2000;
+ }
CFRelease(encodingName);
}
CFStringRef cfStr = CFStringCreateWithBytes(NULL, (const UInt8 *) bytes, (CFIndex) length, encoding, false);