diff options
author | rowanbeentje <rowan@beent.je> | 2009-03-04 02:00:29 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2009-03-04 02:00:29 +0000 |
commit | c4e668aa544b62c4720bbd8af95884501958f754 (patch) | |
tree | 42df4b216e88247f31e001bcab334bfb803576bb | |
parent | f716a08986866455792ccbb3a7d16c4e72028ade (diff) | |
download | sequelpro-c4e668aa544b62c4720bbd8af95884501958f754.tar.gz sequelpro-c4e668aa544b62c4720bbd8af95884501958f754.tar.bz2 sequelpro-c4e668aa544b62c4720bbd8af95884501958f754.zip |
- Renames "Database Encoding" menu item in Database menu to "View Using Encoding" for clarity
- Add support for EUC-KR (I think, unable to test), hopefully fixing Issue #149
- Add workaround for UTF8 via Latin 1, supporting viewing and editing of data added using broken clients/upgraded old Wordpress/etc.
-rw-r--r-- | Interfaces/English.lproj/MainMenu.xib | 134 | ||||
-rw-r--r-- | Source/CMMCPConnection.h | 1 | ||||
-rw-r--r-- | Source/CMMCPConnection.m | 93 | ||||
-rw-r--r-- | Source/TableDocument.m | 22 |
4 files changed, 192 insertions, 58 deletions
diff --git a/Interfaces/English.lproj/MainMenu.xib b/Interfaces/English.lproj/MainMenu.xib index 731e1079..211e9aff 100644 --- a/Interfaces/English.lproj/MainMenu.xib +++ b/Interfaces/English.lproj/MainMenu.xib @@ -8,7 +8,7 @@ <string key="IBDocument.HIToolboxVersion">353.00</string> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="498"/> + <integer value="29"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -886,7 +886,7 @@ </object> <object class="NSMenuItem" id="197143231"> <reference key="NSMenu" ref="172963563"/> - <string key="NSTitle">Database Encoding</string> + <string key="NSTitle">View Using Encoding</string> <string key="NSKeyEquiv"/> <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> @@ -895,7 +895,7 @@ <string key="NSAction">submenuAction:</string> <int key="NSTag">1</int> <object class="NSMenu" key="NSSubmenu" id="487618540"> - <string key="NSTitle">Database Encoding</string> + <string key="NSTitle">View Using Encoding</string> <object class="NSMutableArray" key="NSMenuItems"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSMenuItem" id="315523933"> @@ -918,6 +918,14 @@ <reference key="NSMixedImage" ref="315854375"/> <string key="NSAction">_popUpItemAction:</string> </object> + <object class="NSMenuItem" id="345290219"> + <reference key="NSMenu" ref="487618540"/> + <string key="NSTitle">UTF-8 Unicode via Latin 1</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + </object> <object class="NSMenuItem" id="649847059"> <reference key="NSMenu" ref="487618540"/> <bool key="NSIsDisabled">YES</bool> @@ -1124,6 +1132,14 @@ <reference key="NSMixedImage" ref="315854375"/> <string key="NSAction">_popUpItemAction:</string> </object> + <object class="NSMenuItem" id="302542110"> + <reference key="NSMenu" ref="487618540"/> + <string key="NSTitle">EUC-KR Korean (euckr)</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + </object> </object> </object> </object> @@ -1701,7 +1717,6 @@ </object> <string key="NSFrame">{{1, 17}, {414, 169}}</string> <reference key="NSSuperview" ref="1003742956"/> - <reference key="NSNextKeyView" ref="207456822"/> <reference key="NSDocView" ref="207456822"/> <reference key="NSBGColor" ref="129141099"/> <int key="NScvFlags">4</int> @@ -1735,7 +1750,6 @@ </object> <string key="NSFrame">{{1, 0}, {414, 17}}</string> <reference key="NSSuperview" ref="1003742956"/> - <reference key="NSNextKeyView" ref="733755652"/> <reference key="NSDocView" ref="733755652"/> <reference key="NSBGColor" ref="129141099"/> <int key="NScvFlags">4</int> @@ -1744,7 +1758,6 @@ </object> <string key="NSFrame">{{263, 52}, {427, 198}}</string> <reference key="NSSuperview" ref="577801299"/> - <reference key="NSNextKeyView" ref="44813966"/> <int key="NSsFlags">50</int> <reference key="NSVScroller" ref="257545235"/> <reference key="NSHScroller" ref="1049987731"/> @@ -2098,6 +2111,16 @@ <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="520776436"/> </object> + <object class="NSMenuItem" id="314015554"> + <reference key="NSMenu" ref="991161599"/> + <string key="NSTitle">UTF-8 Unicode via Latin 1</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="520776436"/> + </object> <object class="NSMenuItem" id="32802552"> <reference key="NSMenu" ref="991161599"/> <bool key="NSIsDisabled">YES</bool> @@ -2330,6 +2353,16 @@ <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="520776436"/> </object> + <object class="NSMenuItem" id="67124884"> + <reference key="NSMenu" ref="991161599"/> + <string key="NSTitle">EUC-KR Korean (euckr)</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="520776436"/> + </object> </object> </object> <int key="NSPreferredEdge">3</int> @@ -3843,6 +3876,22 @@ </object> <int key="connectionID">832</int> </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">chooseEncoding:</string> + <reference key="source" ref="63651044"/> + <reference key="destination" ref="302542110"/> + </object> + <int key="connectionID">834</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">chooseEncoding:</string> + <reference key="source" ref="63651044"/> + <reference key="destination" ref="345290219"/> + </object> + <int key="connectionID">836</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -4527,6 +4576,8 @@ <reference ref="384948978"/> <reference ref="290468717"/> <reference ref="803749958"/> + <reference ref="302542110"/> + <reference ref="345290219"/> </object> <reference key="parent" ref="197143231"/> </object> @@ -5492,6 +5543,8 @@ <reference ref="443840617"/> <reference ref="487957815"/> <reference ref="288134736"/> + <reference ref="314015554"/> + <reference ref="67124884"/> </object> <reference key="parent" ref="520776436"/> </object> @@ -5810,6 +5863,26 @@ <reference key="object" ref="499136806"/> <reference key="parent" ref="246588402"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">833</int> + <reference key="object" ref="302542110"/> + <reference key="parent" ref="487618540"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">835</int> + <reference key="object" ref="345290219"/> + <reference key="parent" ref="487618540"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">838</int> + <reference key="object" ref="314015554"/> + <reference key="parent" ref="991161599"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">839</int> + <reference key="object" ref="67124884"/> + <reference key="parent" ref="991161599"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -5908,6 +5981,7 @@ <string>203.IBAttributePlaceholdersKey</string> <string>203.IBPluginDependency</string> <string>203.ImportedFromIB2</string> + <string>204.IBEditorWindowLastContentRect</string> <string>204.IBWindowTemplateEditedContentRect</string> <string>204.ImportedFromIB2</string> <string>204.editorWindowContentRectSynchronizationRect</string> @@ -6128,6 +6202,7 @@ <string>547.ImportedFromIB2</string> <string>549.IBPluginDependency</string> <string>549.ImportedFromIB2</string> + <string>550.IBEditorWindowLastContentRect</string> <string>550.IBPluginDependency</string> <string>550.ImportedFromIB2</string> <string>550.editorWindowContentRectSynchronizationRect</string> @@ -6206,6 +6281,7 @@ <string>633.ImportedFromIB2</string> <string>634.IBPluginDependency</string> <string>634.ImportedFromIB2</string> + <string>635.IBEditorWindowLastContentRect</string> <string>635.IBPluginDependency</string> <string>635.ImportedFromIB2</string> <string>635.editorWindowContentRectSynchronizationRect</string> @@ -6357,6 +6433,10 @@ <string>824.ImportedFromIB2</string> <string>83.IBPluginDependency</string> <string>83.ImportedFromIB2</string> + <string>833.IBPluginDependency</string> + <string>835.IBPluginDependency</string> + <string>838.IBPluginDependency</string> + <string>839.IBPluginDependency</string> <string>92.IBPluginDependency</string> <string>92.ImportedFromIB2</string> </object> @@ -6468,7 +6548,8 @@ </object> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> - <string>{{59, 583}, {710, 292}}</string> + <string>{{14, 553}, {710, 292}}</string> + <string>{{14, 553}, {710, 292}}</string> <reference ref="9"/> <string>{{59, 583}, {710, 292}}</string> <integer value="0" id="6"/> @@ -6631,7 +6712,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> </object> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> - <string>{{51, 384}, {511, 20}}</string> + <string>{{228, 604}, {511, 20}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>{{506, 836}, {511, 20}}</string> @@ -6773,6 +6854,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> + <string>{{22, 225}, {228, 396}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>{{67, 289}, {228, 362}}</string> @@ -6816,7 +6898,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> - <string>{{340, 454}, {218, 253}}</string> + <string>{{66, 368}, {218, 253}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>{{518, 583}, {218, 253}}</string> @@ -6844,7 +6926,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> - <string>{{570, 554}, {231, 153}}</string> + <string>{{470, 451}, {231, 153}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>{{312, 683}, {231, 153}}</string> @@ -6858,6 +6940,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> + <string>{{701, 101}, {279, 423}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>{{556, 185}, {279, 383}}</string> @@ -7010,6 +7093,10 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> </object> </object> @@ -7033,7 +7120,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> </object> </object> <nil key="sourceID"/> - <int key="maxID">832</int> + <int key="maxID">839</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -7266,13 +7353,13 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> </object> <object class="IBPartialClassDescription"> <string key="className">SPQueryConsole</string> - <string key="superclassName">NSObject</string> + <string key="superclassName">NSWindowController</string> <object class="NSMutableDictionary" key="actions"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>clearConsole:</string> - <string>showConsole:</string> + <string>saveConsoleAs:</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -7281,17 +7368,8 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> </object> </object> <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>consolePanel</string> - <string>consoleTextView</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSPanel</string> - <string>NSTextView</string> - </object> + <string key="NS.key.0">consoleTextView</string> + <string key="NS.object.0">NSTextView</string> </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> @@ -7376,6 +7454,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> + <string>addDatabaseButton</string> <string>chooseDatabaseButton</string> <string>connectFavoritesTableView</string> <string>connectProgressBar</string> @@ -7383,6 +7462,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>connectSheet</string> <string>createTableSyntaxWindow</string> <string>customQueryInstance</string> + <string>databaseEncodingButton</string> <string>databaseField</string> <string>databaseNameField</string> <string>databaseSheet</string> @@ -7400,6 +7480,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>syntaxView</string> <string>syntaxViewContent</string> <string>tableContentInstance</string> + <string>tableDataInstance</string> <string>tableDumpInstance</string> <string>tableSourceInstance</string> <string>tableStatusInstance</string> @@ -7413,6 +7494,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>id</string> + <string>id</string> <string>NSTableView</string> <string>id</string> <string>id</string> @@ -7422,6 +7504,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>id</string> <string>id</string> <string>id</string> + <string>id</string> <string>NSTableView</string> <string>id</string> <string>NSArrayController</string> @@ -7439,6 +7522,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>id</string> <string>id</string> <string>id</string> + <string>id</string> <string>NSTabView</string> <string>id</string> <string>id</string> @@ -7484,6 +7568,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>customQueryInstance</string> <string>tabView</string> <string>tableContentInstance</string> + <string>tableDataInstance</string> <string>tableDocumentInstance</string> <string>tableDumpInstance</string> <string>tableSourceInstance</string> @@ -7505,6 +7590,7 @@ Y2hhbmdlIHRoZSBvcmRlcg</string> <string>id</string> <string>id</string> <string>id</string> + <string>id</string> </object> </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> diff --git a/Source/CMMCPConnection.h b/Source/CMMCPConnection.h index f07c9786..584b8056 100644 --- a/Source/CMMCPConnection.h +++ b/Source/CMMCPConnection.h @@ -62,6 +62,7 @@ - (void) disconnect; - (BOOL) reconnect; - (IBAction) closeSheet:(id)sender; ++ (NSStringEncoding) encodingForMySQLEncoding:(const char *) mysqlEncoding; - (void) setParentWindow:(NSWindow *)theWindow; - (BOOL) selectDB:(NSString *) dbName; - (CMMCPResult *) queryString:(NSString *) query; diff --git a/Source/CMMCPConnection.m b/Source/CMMCPConnection.m index df1de415..14cd6ba7 100644 --- a/Source/CMMCPConnection.m +++ b/Source/CMMCPConnection.m @@ -214,23 +214,26 @@ static void forcePingTimeout(int signalNumber); } /* -Gets a proper NSStringEncoding according to the given MySQL charset. - -MySQL 4.0 offers this charsets: -big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin1_de latin2 latin5 sjis swe7 tis620 ujis usa7 win1250 win1251ukr - -WARNING : incomplete implementation. Please, send your fixes. - + * Gets a proper NSStringEncoding according to the given MySQL charset. + * + * MySQL 4.0 offers this charsets: + * big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 + * greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin1_de latin2 latin5 sjis + * swe7 tis620 ujis usa7 win1250 win1251ukr + * + * WARNING : incomplete implementation. Please, send your fixes. + */ + (NSStringEncoding) encodingForMySQLEncoding:(const char *) mysqlEncoding { - // unicode + // Unicode encodings: if (!strncmp(mysqlEncoding, "utf8", 4)) { return NSUTF8StringEncoding; } if (!strncmp(mysqlEncoding, "ucs2", 4)) { return NSUnicodeStringEncoding; } - // west european + + // Roman alphabet encodings: if (!strncmp(mysqlEncoding, "ascii", 5)) { return NSASCIIStringEncoding; } @@ -240,50 +243,76 @@ WARNING : incomplete implementation. Please, send your fixes. if (!strncmp(mysqlEncoding, "macroman", 8)) { return NSMacOSRomanStringEncoding; } - // central european - if (!strncmp(mysqlEncoding, "cp1250", 6)) { - return NSWindowsCP1250StringEncoding; - } + + // Roman alphabet with central/east european additions: if (!strncmp(mysqlEncoding, "latin2", 6)) { return NSISOLatin2StringEncoding; } - // south european and middle east - if (!strncmp(mysqlEncoding, "cp1256", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic); + if (!strncmp(mysqlEncoding, "cp1250", 6)) { + return NSWindowsCP1250StringEncoding; } - if (!strncmp(mysqlEncoding, "greek", 5)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinGreek); + if (!strncmp(mysqlEncoding, "win1250", 7)) { + return NSWindowsCP1250StringEncoding; } - if (!strncmp(mysqlEncoding, "hebrew", 6)) { - CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinHebrew); + if (!strncmp(mysqlEncoding, "cp1257", 6)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsBalticRim); } + + // Additions for Turkish: if (!strncmp(mysqlEncoding, "latin5", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin5); + return NSWindowsCP1254StringEncoding; } - // baltic - if (!strncmp(mysqlEncoding, "cp1257", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsBalticRim); + + // Greek: + if (!strncmp(mysqlEncoding, "greek", 5)) { + return NSWindowsCP1253StringEncoding; + } + + // Cyrillic: + if (!strncmp(mysqlEncoding, "win1251ukr", 6)) { + return NSWindowsCP1251StringEncoding; } - // cyrillic if (!strncmp(mysqlEncoding, "cp1251", 6)) { return NSWindowsCP1251StringEncoding; } - // asian - if (!strncmp(mysqlEncoding, "big5", 4)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingBig5); + if (!strncmp(mysqlEncoding, "koi8_ru", 6)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingKOI8_R); + } + if (!strncmp(mysqlEncoding, "koi8_ukr", 6)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingKOI8_R); + } + + // Arabic: + if (!strncmp(mysqlEncoding, "cp1256", 6)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic); + } + + // Hebrew: + if (!strncmp(mysqlEncoding, "hebrew", 6)) { + CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinHebrew); } + + // Asian: if (!strncmp(mysqlEncoding, "ujis", 4)) { return NSJapaneseEUCStringEncoding; } if (!strncmp(mysqlEncoding, "sjis", 4)) { return NSShiftJISStringEncoding; } - - // default to iso latin 1, even if it is not exact (throw an exception?) - NSLog(@"warning: unknown encoding %s! falling back to latin1.", mysqlEncoding); + if (!strncmp(mysqlEncoding, "big5", 4)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingBig5); + } + if (!strncmp(mysqlEncoding, "euc_kr", 6)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR); + } + if (!strncmp(mysqlEncoding, "euckr", 5)) { + return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR); + } + + // Default to iso latin 1, even if it is not exact (throw an exception?) + NSLog(@"WARNING : unknown name for MySQL encoding '%s'!\n\t\tFalling back to iso-latin1.", mysqlEncoding); return NSISOLatin1StringEncoding; } -*/ /* diff --git a/Source/TableDocument.m b/Source/TableDocument.m index ea02dd20..6957ae4d 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -606,10 +606,20 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa */ - (void)setConnectionEncoding:(NSString *)mysqlEncoding reloadingViews:(BOOL)reloadViews { + BOOL uselatin1results = NO; + + // Special-case UTF-8 over latin 1 to allow viewing/editing of mangled data. + if ([mysqlEncoding isEqualToString:@"utf8-"]) { + uselatin1results = YES; + mysqlEncoding = @"utf8"; + } + // set encoding of connection and client [mySQLConnection queryString:[NSString stringWithFormat:@"SET NAMES '%@'", mysqlEncoding]]; if ( [[mySQLConnection getLastErrorMessage] isEqualToString:@""] ) { + if (uselatin1results) + [mySQLConnection queryString:@"SET CHARACTER_SET_RESULTS=latin1"]; [mySQLConnection setEncoding:[CMMCPConnection encodingForMySQLEncoding:[mysqlEncoding UTF8String]]]; [_encoding autorelease]; _encoding = [mysqlEncoding retain]; @@ -622,8 +632,12 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa } // update the selected menu item - [self updateEncodingMenuWithSelectedEncoding:[self encodingNameFromMySQLEncoding:mysqlEncoding]]; - + if (uselatin1results) { + [self updateEncodingMenuWithSelectedEncoding:[self encodingNameFromMySQLEncoding:[NSString stringWithFormat:@"%@-", mysqlEncoding]]]; + } else { + [self updateEncodingMenuWithSelectedEncoding:[self encodingNameFromMySQLEncoding:mysqlEncoding]]; + } + // Reload stuff as appropriate [tableDataInstance resetAllData]; if (reloadViews) { @@ -669,6 +683,7 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa NSDictionary *translationMap = [NSDictionary dictionaryWithObjectsAndKeys: @"UCS-2 Unicode (ucs2)", @"ucs2", @"UTF-8 Unicode (utf8)", @"utf8", + @"UTF-8 Unicode via Latin 1", @"utf8-", @"US ASCII (ascii)", @"ascii", @"ISO Latin 1 (latin1)", @"latin1", @"Mac Roman (macroman)", @"macroman", @@ -683,6 +698,7 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa @"Big5 Traditional Chinese (big5)", @"big5", @"Shift-JIS Japanese (sjis)", @"sjis", @"EUC-JP Japanese (ujis)", @"ujis", + @"EUC-KR Korean (euckr)", @"euckr", nil]; NSString *encodingName = [translationMap valueForKey:mysqlEncoding]; @@ -700,6 +716,7 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa NSDictionary *translationMap = [NSDictionary dictionaryWithObjectsAndKeys: @"ucs2", @"UCS-2 Unicode (ucs2)", @"utf8", @"UTF-8 Unicode (utf8)", + @"utf8-", @"UTF-8 Unicode via Latin 1", @"ascii", @"US ASCII (ascii)", @"latin1", @"ISO Latin 1 (latin1)", @"macroman", @"Mac Roman (macroman)", @@ -714,6 +731,7 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa @"big5", @"Big5 Traditional Chinese (big5)", @"sjis", @"Shift-JIS Japanese (sjis)", @"ujis", @"EUC-JP Japanese (ujis)", + @"euckr", @"EUC-KR Korean (euckr)", nil]; NSString *mysqlEncoding = [translationMap valueForKey:encodingName]; |