[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:01039] internal character code



こんにちは松尾です。

fdcloneを便利に利用させていただいています。

質問がありメールさせていただきました。

ごくたまに文字化け(ファイル名通りに表示されない)するので
コンパイルオプションなどでなんとかならないかと
調べてみました。

結局デバッガで動作を追ったりしていたのですが
printf.c内でShift JISとUnicodeが混ざっているような
データになっていました。

Installの
---
	CODEEUC		OS では EUC 漢字コードを使っている。
			(この識別子が未定義の場合は Shift JIS)
---
という説明と合わせて考えると
fdcloneの内部文字コード(漢字コード)はShift JISかEUCで、
これに変換できないファイル名場合に
文字化けを起こすのではないかと予想しました。

この予想が当たっていたとしてですが、
内部文字コードを別のコード(utf8でしょうか…)も使えるようにする
考えというか予定はありますでしょうか?


あと細かいですが、
cygwinでは「なし」というグループ名に所属しているのですが
この表示も文字化けします。


--
ここ以降はテストで使った環境などを書きます。
linux(debian)にはディスプレイをつないでいません。
fdcloneで表示できるかチェックする前に
ls --show-control-chars
で表示できているか調べています。
(u)xtermで大丈夫と勝手に思っていたのですが意外とダメで
cygwin付属のminttyが文字化けなく表示できました。


--
■テストに使ったファイル名
U+2049("!?"が1文字になったもの)が含まれているもの
U+20bb7(吉の口の上が土)が含まれているもの
韓国語で「こんにちは」をファイル名にしたもの

■fdの実行環境

1:cgywin64bit (15/11/29時点で最新) on windows 10

  $ cygcheck -c cygwin
  Cygwin Package Information
  Package              Version        Status
  cygwin               2.3.1-1        OK

2:debian stretch (15/11/29時点で最新)

■~/.fd2rcの内容
 実行環境1,2で同じものを使っています
 関係ありそうなところだけ…
$ grep -i code ~/.fd2rc | grep -v ^#
UNICODEBUFFER=1
DEFKCODE="utf8-iconv"
INPUTKCODE="utf8-iconv"
PTYINKCODE="utf8-iconv"
PTYOUTKCODE="utf8-iconv"
FNAMEKCODE="utf8-iconv"

■使用した端末
1:Cygwin/X(cygwin xterm)
$ cygcheck.exe -c | grep xorg-server
xorg-server               1.17.4-1           OK
xorg-server-common        1.17.4-1           OK

$ cygcheck.exe -c | grep xterm
xterm                     320-1              OK

2:debian xterm (+ Cygwin/X)
$ dpkg -l | grep xterm
ii  xterm                                 320-1
  amd64        X terminal emulator

3:cygwin付属端末ソフト
mintty