1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* vim:expandtab:shiftwidth=4:tabstop=4:
4 /* This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include
"nsISupports.idl"
10 [scriptable
, uuid(249f52a3
-2599-4b00
-ba40
-0481364831a2
)]
11 interface nsIUTF8ConverterService
: nsISupports
14 * Ensure that |aString| is encoded in UTF-8. If not,
15 * convert to UTF-8 assuming it's encoded in |aCharset|
16 * and return the converted string in UTF-8.
18 * @param aString a string to ensure its UTF8ness
19 * @param aCharset the charset to convert from if |aString| is not in UTF-8
20 * @param aSkipCheck determines whether or not to skip 'ASCIIness' and
21 * 'UTF8ness' check. Set this to PR_TRUE only if you suspect that
22 * aString can be mistaken for ASCII / UTF-8 but is actually NOT
23 * in ASCII / UTF-8 so that aString has to go through the conversion.
24 * skipping ASCIIness/UTF8ness check.
25 * The most common case is the input is in 7bit non-ASCII charsets
26 * like ISO-2022-JP, HZ or UTF-7 (in its original form or
27 * a modified form used in IMAP folder names).
28 * @param aAllowSubstitution when true, allow the decoder to substitute
29 * invalid input sequences by replacement characters (defaults to
31 * @return the converted string in UTF-8.
32 * @throws NS_ERROR_UCONV_NOCONV when there is no decoder for aCharset
33 * or error code of nsIUnicodeDecoder in case of conversion failure
37 AUTF8String convertStringToUTF8
(in ACString aString
,
39 in boolean aSkipCheck
,
40 [optional] in boolean aAllowSubstitution
);
42 /* XXX : To-be-added. convertStringFromUTF8 */
45 * Ensure that |aSpec| (after URL-unescaping it) is encoded in UTF-8.
46 * If not, convert it to UTF-8, assuming it's encoded in |aCharset|,
47 * and return the result.
49 * <p>Make sure that all characters outside US-ASCII in your input spec
50 * are url-escaped if your spec is not in UTF-8 (before url-escaping)
51 * because the presence of non-ASCII characters is <strong>blindly</strong>
52 * regarded as an indication that your input spec is in unescaped UTF-8
53 * and it will be returned without further processing. No valid spec
54 * going around in Mozilla code would break this assumption.
56 * <p>XXX The above may change in the future depending on the usage pattern.
58 * @param aSpec an url-escaped URI spec to ensure its UTF8ness
59 * @param aCharset the charset to convert from if |aSpec| is not in UTF-8
60 * @return the converted spec in UTF-8.
61 * @throws NS_ERROR_UCONV_NOCONV when there is no decoder for aCharset
62 * or error code of nsIUnicodeDecoder in case of conversion failure
65 AUTF8String convertURISpecToUTF8
(in ACString aSpec
,