mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 16:30:41 +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>
|
2005-03-21 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Headers/Foundation/NSFileManager.h: Add path handling documentation.
|
* Headers/Foundation/NSFileManager.h: Add path handling documentation.
|
||||||
|
@ -9,7 +15,7 @@
|
||||||
gnustep/unix/windows. In the default gnustep mode we try to
|
gnustep/unix/windows. In the default gnustep mode we try to
|
||||||
handle paths in any format and just do the right thing.
|
handle paths in any format and just do the right thing.
|
||||||
Also updated handling of path extensions to match MacOSX behavior.
|
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.
|
Optimise a little by avoiding class lookups.
|
||||||
|
|
||||||
2005-03-18 Richard Frith-Macdonald <rfm@gnu.org>
|
2005-03-18 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
|
@ -1967,6 +1967,10 @@ NSDebugMLLog(@"GSMime", @"Header parsed - %@", info);
|
||||||
- (void) setDefaultCharset: (NSString*)aName
|
- (void) setDefaultCharset: (NSString*)aName
|
||||||
{
|
{
|
||||||
_defaultEncoding = [documentClass encodingFromCharset: 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
|
* 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*) 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;
|
return charset;
|
||||||
}
|
}
|
||||||
|
@ -3305,7 +3320,14 @@ static NSCharacterSet *tokenSet = nil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the string encoding corresponding to the specified MIME
|
* 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
|
+ (NSStringEncoding) encodingFromCharset: (NSString*)charset
|
||||||
{
|
{
|
||||||
|
@ -3320,7 +3342,8 @@ static NSCharacterSet *tokenSet = nil;
|
||||||
enc = (NSStringEncoding)NSMapGet(charsets, charset);
|
enc = (NSStringEncoding)NSMapGet(charsets, charset);
|
||||||
if (enc == 0)
|
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);
|
NSIntMapValueCallBacks, 0);
|
||||||
NSMapInsert(charsets, (void*)@"ascii",
|
NSMapInsert(charsets, (void*)@"ascii",
|
||||||
(void*)NSASCIIStringEncoding);
|
(void*)NSASCIIStringEncoding);
|
||||||
|
NSMapInsert(charsets, (void*)@"us-ascii",
|
||||||
|
(void*)NSASCIIStringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"iso-8859-1",
|
NSMapInsert(charsets, (void*)@"iso-8859-1",
|
||||||
(void*)NSISOLatin1StringEncoding);
|
(void*)NSISOLatin1StringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"iso-8859-2",
|
NSMapInsert(charsets, (void*)@"iso-8859-2",
|
||||||
|
@ -3407,10 +3432,14 @@ static NSCharacterSet *tokenSet = nil;
|
||||||
(void*)NSUnicodeStringEncoding);
|
(void*)NSUnicodeStringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"iso-10646",
|
NSMapInsert(charsets, (void*)@"iso-10646",
|
||||||
(void*)NSUnicodeStringEncoding);
|
(void*)NSUnicodeStringEncoding);
|
||||||
|
NSMapInsert(charsets, (void*)@"utf-16",
|
||||||
|
(void*)NSUnicodeStringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"big5",
|
NSMapInsert(charsets, (void*)@"big5",
|
||||||
(void*)NSBIG5StringEncoding);
|
(void*)NSBIG5StringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"shift_JIS",
|
NSMapInsert(charsets, (void*)@"shift_JIS",
|
||||||
(void*)NSShiftJISStringEncoding);
|
(void*)NSShiftJISStringEncoding);
|
||||||
|
NSMapInsert(charsets, (void*)@"utf-7",
|
||||||
|
(void*)NSUTF7StringEncoding);
|
||||||
NSMapInsert(charsets, (void*)@"utf-8",
|
NSMapInsert(charsets, (void*)@"utf-8",
|
||||||
(void*)NSUTF8StringEncoding);
|
(void*)NSUTF8StringEncoding);
|
||||||
}
|
}
|
||||||
|
@ -3457,11 +3486,15 @@ static NSCharacterSet *tokenSet = nil;
|
||||||
NSMapInsert(encodings, (void*)NSWindowsCP1254StringEncoding,
|
NSMapInsert(encodings, (void*)NSWindowsCP1254StringEncoding,
|
||||||
(void*)@"windows-1254");
|
(void*)@"windows-1254");
|
||||||
NSMapInsert(encodings, (void*)NSUnicodeStringEncoding,
|
NSMapInsert(encodings, (void*)NSUnicodeStringEncoding,
|
||||||
(void*)@"utf-8");
|
(void*)@"utf-16");
|
||||||
NSMapInsert(encodings, (void*)NSBIG5StringEncoding,
|
NSMapInsert(encodings, (void*)NSBIG5StringEncoding,
|
||||||
(void*)@"big5");
|
(void*)@"big5");
|
||||||
NSMapInsert(encodings, (void*)NSShiftJISStringEncoding,
|
NSMapInsert(encodings, (void*)NSShiftJISStringEncoding,
|
||||||
(void*)@"shift_JIS");
|
(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