3
* Copyright (c) 2003,2004 Masahito Omote <omote@utyuuzin.net>
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. Neither the name of authors nor the names of its contributors
17
* may be used to endorse or promote products derived from this software
18
* without specific prior written permission.
20
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35
#include "uim/gettext.h"
37
gchar *charset_convert(const gchar *in,
45
g_return_val_if_fail(in, NULL);
46
g_return_val_if_fail(incode && *incode, g_strdup(in));
47
g_return_val_if_fail(outcode && *outcode, g_strdup(in));
49
out = g_convert(in, -1, outcode, incode, &rbytes, &wbytes, &error);
51
g_printerr("g_convert failed: %s\nin: %s out: %s\n",
52
error->message, in, out);
58
gchar *utf8_convert(const gchar *in) {
63
g_return_val_if_fail(in, NULL);
65
out = g_locale_to_utf8(in, -1, &rbytes, &wbytes, &error);
66
if(out == NULL && error != NULL) {
67
if(g_utf8_validate(in, -1, NULL)) {
70
g_printerr("g_locale_to_utf8 failed: %s\n", error->message);
77
gchar *utf8_to_eucjp(const gchar *utf8) {
79
g_return_val_if_fail(utf8, NULL);
81
if(g_utf8_validate(utf8, -1, NULL)) {
82
eucjp = charset_convert(utf8, "UTF-8", "EUC-JP");
85
/* XXX: must prepare fallbacks */
89
gchar *eucjp_to_utf8(const gchar *eucjp) {
91
g_return_val_if_fail(eucjp, NULL);
93
/* XXX: must check wheter eucjp is really EUC-JP */
94
utf8 = charset_convert(eucjp, "EUC-JP", "UTF-8");