K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>状況を整理してみます。 > >・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ほ�」を返している。 > >念のため確認ですが、 >・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_)
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!