[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7205] Re: pack/unpack

From: Yoshida Masato <yoshidam@...>
Date: 1999-06-24 02:50:41 UTC
List: ruby-dev #7205
よしだです

Tadayoshi Funaba <tadf@kt.rim.or.jp> writes:
> pack/unpack で UTF8 がちょっと違うみたいです。だいたいこんな感じかなあ
> と思うんですが、 uv_to_utf8() の最後のあたりよくわからなかったです。余
> 計な修正してるかも。

ふなばさんのパッチでも,pack したときにちゃんとした UTF-8 に
ならないようです。

--- pack.c.org	Thu Jun 24 11:26:48 1999
+++ pack.c	Thu Jun 24 11:02:51 1999
@@ -1597,47 +1597,47 @@
     }
     if (uv <= 0x7ff) {
 	buf[0] = ((uv>>6)&0xff)|0xc0;
-	buf[1] = uv&0x3f;
+	buf[1] = (uv&0x3f)|0x80;
 	return 2;
     }
     if (uv <= 0xffff) {
 	buf[0] = ((uv>>12)&0xff)|0xe0;
-	buf[1] = (uv>>6)&0x3f;
-	buf[2] = uv&0x3f;
+	buf[1] = ((uv>>6)&0x3f)|0x80;
+	buf[2] = (uv&0x3f)|0x80;
 	return 3;
     }
     if (uv <= 0x1fffff) {
 	buf[0] = ((uv>>18)&0xff)|0xf0;
-	buf[1] = (uv>>12)&0x3f;
-	buf[2] = (uv>>6)&0x3f;
-	buf[3] = uv&0x3f;
+	buf[1] = ((uv>>12)&0x3f)|0x80;
+	buf[2] = ((uv>>6)&0x3f)|0x80;
+	buf[3] = (uv&0x3f)|0x80;
 	return 4;
     }
     if (uv <= 0x3ffffff) {
 	buf[0] = ((uv>>24)&0xff)|0xf8;
-	buf[1] = (uv>>18)&0x3f;
-	buf[2] = (uv>>12)&0x3f;
-	buf[3] = (uv>>6)&0x3f;
-	buf[4] = uv&0x3f;
+	buf[1] = ((uv>>18)&0x3f)|0x80;
+	buf[2] = ((uv>>12)&0x3f)|0x80;
+	buf[3] = ((uv>>6)&0x3f)|0x80;
+	buf[4] = (uv&0x3f)|0x80;
 	return 5;
     }
     if (uv <= 0x7fffffff) {
 	buf[0] = ((uv>>30)&0xff)|0xfc;
-	buf[1] = (uv>>24)&0x3f;
-	buf[2] = (uv>>18)&0x3f;
-	buf[3] = (uv>>12)&0x3f;
-	buf[4] = (uv>>6)&0x3f;
-	buf[5] = uv&0x3f;
+	buf[1] = ((uv>>24)&0x3f)|0x80;
+	buf[2] = ((uv>>18)&0x3f)|0x80;
+	buf[3] = ((uv>>12)&0x3f)|0x80;
+	buf[4] = ((uv>>6)&0x3f)|0x80;
+	buf[5] = (uv&0x3f)|0x80;
 	return 6;
     }
     /* if (uv <= 0xfffffffff) */ {
 	buf[0] = 0xfe;
-	buf[1] = (uv>>30)&0x3f;
-	buf[2] = (uv>>24)&0x3f;
-	buf[3] = (uv>>18)&0x3f;
-	buf[4] = (uv>>12)&0x3f;
-	buf[5] = (uv>>6)&0x3f;
-	buf[6] = uv&0x3f;
+	buf[1] = ((uv>>30)&0x3f)|0x80;
+	buf[2] = ((uv>>24)&0x3f)|0x80;
+	buf[3] = ((uv>>18)&0x3f)|0x80;
+	buf[4] = ((uv>>12)&0x3f)|0x80;
+	buf[5] = ((uv>>6)&0x3f)|0x80;
+	buf[6] = (uv&0x3f)|0x80;
 	return 7;
     }
     buf[0] = uv>>BYTEWIDTH;

-- 
    吉田正人  INS エンジニアリング(株)
              事業開拓室
    yoshidam@inse.co.jp
    yoshidam@yoshidam.net

In This Thread