[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: euc-jp text vs utf-8



Shin Miyazaki <shinm@xxxxxxxxx> writes:

> UTF-8 のマルチバイト文字の先頭は 0xC0 以上の値になるはずですので、
> この場合は、少なくとも「UTF-8じゃない」というのはわかると思います。

完全には、そうもいかないんですよ。Muleの自動判別は、

「あらゆる可能なsequeceの部分列も、許す。」

ということになっているので、(process inputのとき、これは特に重要)

A5       B9       A5       B3      
10100101 10111001 10100101 10110011

って、sequenceは、

F9       A5       B9       A5       B3      
11111001 10100101 10111001 10100101 10110011

っていうvalidなUTF-8の部分列とみなせるので、rejectはされないんです。

とはいえ、今回の場合は、6バイトあるから、rejectできるはずだなぁ。

というわけで、patchです。

from himi

## しかし、「ス」だけだと、むりだな。こりゃ。

Index: coding.c
===================================================================
RCS file: g:/repdev/Meadow/src/coding.c,v
retrieving revision 1.11
diff -c -r1.11 coding.c
*** coding.c	2000/01/29 11:28:01	1.11
--- coding.c	2000/02/23 00:17:25
***************
*** 2279,2285 ****
        /* skip extra octets */
        for (seq_maybe_bytes = 5;;seq_maybe_bytes--)
  	{
! 	  if (seq_maybe_bytes < 0)
  	    return 0;
  	  src++;
  	  if (src >= src_end)
--- 2279,2285 ----
        /* skip extra octets */
        for (seq_maybe_bytes = 5;;seq_maybe_bytes--)
  	{
! 	  if (seq_maybe_bytes <= 0)
  	    return 0;
  	  src++;
  	  if (src >= src_end)