summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2007-09-27 13:57:29 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2007-09-27 13:57:29 +0000
commita9d6811bdcbf2d49307c99751377f85d429c1032 (patch)
treecca4642bb11c69c53b4f9061d5564dd5c8696cad /render
parentc5870e07cd0f9e4bd5f3556fd6dcd5d2227f5c6c (diff)
downloadnetsurf-a9d6811bdcbf2d49307c99751377f85d429c1032.tar.gz
netsurf-a9d6811bdcbf2d49307c99751377f85d429c1032.tar.bz2
Also try charsets without transliteration -- not all iconv() implementations support //TRANSLIT as it's a non-standard extension.
svn path=/trunk/netsurf/; revision=3598
Diffstat (limited to 'render')
-rw-r--r--render/form.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/render/form.c b/render/form.c
index f9c4d4971..d99205047 100644
--- a/render/form.c
+++ b/render/form.c
@@ -707,15 +707,36 @@ char *form_encode_item(const char *item, const char *charset,
err = utf8_to_enc(item, cset, 0, &ret);
if (err == UTF8_CONVERT_BADENC) {
- /* charset not understood, try fallback charset (if any) */
- if (fallback) {
- snprintf(cset, sizeof cset, "%s//TRANSLIT", fallback);
- err = utf8_to_enc(item, cset, 0, &ret);
+ /* charset not understood, try without transliteration */
+ snprintf(cset, sizeof cset, "%s", charset);
+ err = utf8_to_enc(item, cset, 0, &ret);
+
+ if (err == UTF8_CONVERT_BADENC) {
+ /* nope, try fallback charset (if any) */
+ if (fallback) {
+ snprintf(cset, sizeof cset,
+ "%s//TRANSLIT", fallback);
+ err = utf8_to_enc(item, cset, 0, &ret);
+
+ if (err == UTF8_CONVERT_BADENC) {
+ /* and without transliteration */
+ snprintf(cset, sizeof cset,
+ "%s", fallback);
+ err = utf8_to_enc(item, cset, 0, &ret);
+ }
+ }
+
+ if (err == UTF8_CONVERT_BADENC) {
+ /* that also failed, use 8859-1 */
+ err = utf8_to_enc(item, "ISO-8859-1//TRANSLIT",
+ 0, &ret);
+ if (err == UTF8_CONVERT_BADENC) {
+ /* and without transliteration */
+ err = utf8_to_enc(item, "ISO-8859-1",
+ 0, &ret);
+ }
+ }
}
- if (err == UTF8_CONVERT_BADENC)
- /* that also failed, use 8859-1 */
- err = utf8_to_enc(item, "ISO-8859-1//TRANSLIT",
- 0, &ret);
}
if (err == UTF8_CONVERT_NOMEM) {
return NULL;
@@ -723,3 +744,4 @@ char *form_encode_item(const char *item, const char *charset,
return ret;
}
+