K.Maebashi's BBS 管理者削除

以下の投稿を削除します。

[1189] Re:os
返信
投稿者:(ぱ)こと管理人
2009/01/02 19:47:50

状況を整理してみます。 ・Linux(Ubuntu 4.1.2-Oubuntu4)←私のところ  →utf-8, EUCともに正常動作 ・Linux(Vine Linux 4.2)  →utf-8では正常動作  →EUCでは、test.dkmにてセグメンテーション違反 その他のスクリプトは、日本語を扱うarray.dkmのようなものを含め、 正常動作。 ・MacOS  →utf-8では正常動作  →EUCでは、以下の現象が発生  ・test.dkmの726行目の'本'という文字リテラルについて、ワイド文字に変換したら   2文字以上と解釈された。  ・array.dkmの46行目の「"hogeほげ".length()」が6を返している。   また、47行目の「"hogeほげほげ".substr(3, 4)」が「eほ&#65533;」を返している。 念のため確認ですが、 ・EUCで動かすときは、「diksam_0_4_02.unix.tgz」をダウンロードして、  これをtar xvzfで展開したフォルダにて、コンパイル、実行をしていますよね?  文字コードの変換等はしていないですよね? ・test.dkmやarray.dkmは、エディタ等で日本語部分を含めちゃんと読めていますよね?  その際、文字コードがEUCであることも、確認できていますよね? MacOSの方はともかくとして、Vine Linuxではarray.dkmの日本語 関連の処理が正常に動いているので、実は文字コード云々は関係 なかった、というオチも考えたのですが、UTF-8版が正常動作して いるなら、やはり何らかの文字コード関係の問題のようです。 うちには今遊んでいるPCはないので、Vineの環境はすぐには作れません。 お手数ですがそちらで以下のテストは可能でしょうか? Vine Linuxにて、以下の修正を実施して、../diksam test.dkmで実行して、 セグメンテーション違反が出るかどうか、よければ試してみてください。 (1)test.dkmの720行目以降をコメントアウト(Diksamでは/* */で囲んでコメントアウト) /* println("日本語"); string str = "日本語"; for (i = 0; i < str.length(); i++) { println("str[" + i + "].." + str[i]); if (str[i] == '本') { println("本"); } } exit(1); println("これは出ない"); */ (2)725~728行目のみをコメントアウト string str = "日本語"; for (i = 0; i < str.length(); i++) { /* println("str[" + i + "].." + str[i]); if (str[i] == '本') { println("本"); } */ } exit(1); println("これは出ない"); また、うちのPCでは動かなかった、という方は他にいらっしゃらないでしょうか。 情報募集中です (_o_)

代替メッセージ

物理削除     パスワード: