[1762] Re:DIKSAM_book_0_4のLinuxでの実行結果について (その2)
投稿者:ICHIA
2012/01/08 04:59:45
昨年はとてもお世話になりました、
今年もよろしくお願い致します。
連絡が、年を越してすみませんでした。
調査結果を報告します。
>そこで確認ですが、
>①入力ファイルの文字コードは何でしょうか? od -cxかなにかでバイト列は取得できますか?
LANG=ja_JP.PCK のSJISです。
ソースのマルチバイトの部分のバイト列です。
println("あいうえおbb");
^^^^^^^^^^^^^^
22 82a0 82a2 82a4 82a6 82a8 62 62 22
でした。
>②dvm_mbstowcs_lenに渡す直前の、st_string_literal_bufferのバイト列は取得できますか? st_string_literal_buffer[0]~[12]までの値はわかりますか?
>
・dkc_close_string_literal()の文字列長を得る関数の復帰値で、
「-1」が返って来た時に、バイト列を表示してみました。
==============================================
string.c:dkc_close_string_literal()
L47: new_str_len = dvm_mbstowcs_len(st_string_literal_buffer);
if (new_str_len < 0) {
追加> for(i=0;i<20;i++)
追加> printf("st_string_literal_buffer[%d]:%x \n",
i,st_string_literal_buffer[i]);
==============================================
結果:
st_string_literal_buffer[0]:a0
st_string_literal_buffer[1]:a2
st_string_literal_buffer[2]:a4
st_string_literal_buffer[3]:a6
st_string_literal_buffer[4]:a8
st_string_literal_buffer[5]:62
st_string_literal_buffer[6]:62
st_string_literal_buffer[7]:0
st_string_literal_buffer[8]:0
8バイト目以降は、0x00 になります。
マルチバイトの1バイトが飛ばされているようです。
・文字列の取得についてですが、
デバック用の文字列を入れて確認しました。
-リテラル(ダブルクォーテーション)の最初と最後の取込みは出来ていました。
-リテラル部分の取込みは、diksam.l Line295 で行われていました。
取込み時にもバイト列を表示させてみましたが、
上記と同じでした。
以上となります。
どうすれば、1バイト目が取り込めるようになるのでしょうか?
現状のdiksam.l で不備はないと思えるのですが・・・
アドバイスをよろしくお願い致します。