mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-29 16:01:38 +00:00
More charset/encoding fixes and improvements.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@20961 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
5c3ec8f597
commit
a8731f9b8c
2 changed files with 47 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
|||
2005-03-22 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/Additions/GSMime.m: Fix some charset-encoding mappings.
|
||||
Add utf-7 and utf-16.
|
||||
Document mapping methods better.
|
||||
|
||||
2005-03-21 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Headers/Foundation/NSFileManager.h: Add path handling documentation.
|
||||
|
@ -9,7 +15,7 @@
|
|||
gnustep/unix/windows. In the default gnustep mode we try to
|
||||
handle paths in any format and just do the right thing.
|
||||
Also updated handling of path extensions to match MacOSX behavior.
|
||||
* Source/Additions/GSMime.h: Remove deprecated method.
|
||||
* Source/Additions/GSMime.m: Remove deprecated method.
|
||||
Optimise a little by avoiding class lookups.
|
||||
|
||||
2005-03-18 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
|
|
@ -1967,6 +1967,10 @@ NSDebugMLLog(@"GSMime", @"Header parsed - %@", info);
|
|||
- (void) setDefaultCharset: (NSString*)aName
|
||||
{
|
||||
_defaultEncoding = [documentClass encodingFromCharset: aName];
|
||||
if (_defaultEncoding == 0)
|
||||
{
|
||||
_defaultEncoding = NSASCIIStringEncoding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -3106,15 +3110,26 @@ static NSCharacterSet *tokenSet = nil;
|
|||
|
||||
/**
|
||||
* Return the MIME characterset name corresponding to the
|
||||
* specified string encoding.
|
||||
* specified string encoding.<br />
|
||||
* As a special case, returns "ascii" if enc is zero.<br />
|
||||
* Raises an NSInvalidArgumentException if enc cannot be
|
||||
* mapped to a charset.<br />
|
||||
* NB. The correspondence between charsets and encodings is not
|
||||
* a direct one to one mapping, so successive calls to +encodingFromCharset:
|
||||
* and +charsetFromEncoding: may not produce the original input.
|
||||
*/
|
||||
+ (NSString*) charsetFromEncoding: (NSStringEncoding)enc
|
||||
{
|
||||
NSString *charset = (NSString*)NSMapGet(encodings, (void*)enc);
|
||||
NSString *charset = @"ascii";
|
||||
|
||||
if (charset == nil)
|
||||
if (enc != 0)
|
||||
{
|
||||
charset = @"utf-8";
|
||||
charset = (NSString*)NSMapGet(encodings, (void*)enc);
|
||||
if (charset == nil)
|
||||
{
|
||||
[NSException raise: NSInvalidArgumentException
|
||||
format: @"no charset for encoding '%d'", enc];
|
||||
}
|
||||
}
|
||||
return charset;
|
||||
}
|
||||
|
@ -3305,7 +3320,14 @@ static NSCharacterSet *tokenSet = nil;
|
|||
|
||||
/**
|
||||
* Return the string encoding corresponding to the specified MIME
|
||||
* characterset name.
|
||||
* characterset name.<br />
|
||||
* As a special case, returns NSASCIIStringEncoding if charset is nil.<br />
|
||||
* Raises an NSInvalidArgumentException if charset cannot be found.<br />
|
||||
* NB. We treat iso-10646-ucs-2 and iso-10646 as utf-16, which should
|
||||
* work correctly for most text, but is not strictly correct.<br />
|
||||
* The correspondence between charsets and encodings is not
|
||||
* a direct one to one mapping, so successive calls to +encodingFromCharset:
|
||||
* and +charsetFromEncoding: may not produce the original input.
|
||||
*/
|
||||
+ (NSStringEncoding) encodingFromCharset: (NSString*)charset
|
||||
{
|
||||
|
@ -3320,7 +3342,8 @@ static NSCharacterSet *tokenSet = nil;
|
|||
enc = (NSStringEncoding)NSMapGet(charsets, charset);
|
||||
if (enc == 0)
|
||||
{
|
||||
enc = NSASCIIStringEncoding; // Default character set.
|
||||
[NSException raise: NSInvalidArgumentException
|
||||
format: @"unknown charset '%@'", charset];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3367,6 +3390,8 @@ static NSCharacterSet *tokenSet = nil;
|
|||
NSIntMapValueCallBacks, 0);
|
||||
NSMapInsert(charsets, (void*)@"ascii",
|
||||
(void*)NSASCIIStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"us-ascii",
|
||||
(void*)NSASCIIStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"iso-8859-1",
|
||||
(void*)NSISOLatin1StringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"iso-8859-2",
|
||||
|
@ -3407,10 +3432,14 @@ static NSCharacterSet *tokenSet = nil;
|
|||
(void*)NSUnicodeStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"iso-10646",
|
||||
(void*)NSUnicodeStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"utf-16",
|
||||
(void*)NSUnicodeStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"big5",
|
||||
(void*)NSBIG5StringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"shift_JIS",
|
||||
(void*)NSShiftJISStringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"utf-7",
|
||||
(void*)NSUTF7StringEncoding);
|
||||
NSMapInsert(charsets, (void*)@"utf-8",
|
||||
(void*)NSUTF8StringEncoding);
|
||||
}
|
||||
|
@ -3457,11 +3486,15 @@ static NSCharacterSet *tokenSet = nil;
|
|||
NSMapInsert(encodings, (void*)NSWindowsCP1254StringEncoding,
|
||||
(void*)@"windows-1254");
|
||||
NSMapInsert(encodings, (void*)NSUnicodeStringEncoding,
|
||||
(void*)@"utf-8");
|
||||
(void*)@"utf-16");
|
||||
NSMapInsert(encodings, (void*)NSBIG5StringEncoding,
|
||||
(void*)@"big5");
|
||||
NSMapInsert(encodings, (void*)NSShiftJISStringEncoding,
|
||||
(void*)@"shift_JIS");
|
||||
NSMapInsert(encodings, (void*)NSUTF7StringEncoding,
|
||||
(void*)@"utf-7");
|
||||
NSMapInsert(encodings, (void*)NSUTF8StringEncoding,
|
||||
(void*)@"utf-8");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue