On 25.02.13 09:37, Johannes Sixt wrote: > From: Johannes Sixt <j6t@xxxxxxxx> > > iconv on Windows does not know the encoding name "utf8", and does not > re-encode log messages when this name is given. Request "UTF-8" encoding. > > Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> > --- > I'm not sure whether I'm right to say that "UTF-8" is the correct > spelling. Anyway, 'iconv -l' on my old Linux box lists "UTF8", but on > Windows it does not. > > A more correct fix would probably be to use is_encoding_utf8() in more > places, but it's outside my time budget look after it. > > -- Hannes > > t/t4210-log-i18n.sh | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/t/t4210-log-i18n.sh b/t/t4210-log-i18n.sh > index 52a7472..b1956e2 100755 > --- a/t/t4210-log-i18n.sh > +++ b/t/t4210-log-i18n.sh > @@ -15,7 +15,7 @@ test_expect_success 'create commits in different encodings' ' > t${utf8_e}st > EOF > git add msg && > - git -c i18n.commitencoding=utf8 commit -F msg && > + git -c i18n.commitencoding=UTF-8 commit -F msg && > cat >msg <<-EOF && > latin1 > > @@ -30,7 +30,7 @@ test_expect_success 'log --grep searches in log output encoding (utf8)' ' > latin1 > utf8 > EOF > - git log --encoding=utf8 --format=%s --grep=$utf8_e >actual && > + git log --encoding=UTF-8 --format=%s --grep=$utf8_e >actual && > test_cmp expect actual > ' > > @@ -45,7 +45,7 @@ test_expect_success 'log --grep searches in log output encoding (latin1)' ' > > test_expect_success 'log --grep does not find non-reencoded values (utf8)' ' > >expect && > - git log --encoding=utf8 --format=%s --grep=$latin1_e >actual && > + git log --encoding=UTF-8 --format=%s --grep=$latin1_e >actual && > test_cmp expect actual > ' > > Hej, (beside that I couldn't find t4210 somewhere), is it something like the following you are tinking of? (Not sure if my cut-and-paste stuff applies, its's rather for review) -- >8 -- [PATCH] iconv_open(): Use UTF-8 if UTF8 failes When iconv_open() failes with EINVAL, it may be that "UTF-8" is spelled wrong by mistake. For example, "UTF8" is used instead of "UTF-8". Some iconv implementations tolerate "UTF8" or "utf8". If not, iconv_open() fails. If is_encoding_utf8() is true change the string to the offical string "UTF-8" with uppercase letters. Reported-By: Johannes Sixt <j6t@xxxxxxxx> Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> --- utf8.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utf8.c b/utf8.c index a4ee665..e9850d0 100644 --- a/utf8.c +++ b/utf8.c @@ -487,6 +487,10 @@ char *reencode_string(const char *in, const char *out_encoding, const char *in_e if (!in_encoding) return NULL; conv = iconv_open(out_encoding, in_encoding); + if (conv == (iconv_t) -1 && errno == EINVAL) { + conv = iconv_open(is_encoding_utf8(out_encoding) ? "UTF-8" : out_encoding, + is_encoding_utf8(in_encoding) ? "UTF-8" : in_encoding); + } if (conv == (iconv_t) -1) return NULL; out = reencode_string_iconv(in, strlen(in), conv); -- 1.8.1.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html