jEdit - Programmer's Text Editor
jEditで'−'(全角のマイナス記号)をEUC-JP保存しようとしたら、
エラーになってファイル途中までしか保存されない〜。
orz...
Cannot save: java.io.CharConversionException: Failed to
encode the character '−'(U+FF0D) at column 23 in line 3000
with the encoding "EUC-JP".
他エディタだと、
'−'(U+FF0D) は A1DD
で保存される。
jEditでも
'+'(U+FF0B) は A1DC
で保存される。
他エディタで保存した'−'は jEdit だと'-'(半角マイナス)に見える。
俺の環境が悪いのか?
Windows Vista Ultimate(SP1)
jEdit 4.3pre14 using Java 1.6.0_07
>>94 ありがとう。
でも、eucjpwin.jarをJRE をインストールしたフォルダの lib\ext に入れ、
PC再起動からやりなおしても駄目でした(症状に変化なし)。orz
>>95 その jar を置くと "EUC-JPwin" っていう新しいエンコーディングが使えるようになるもの
だから、エンコーディングの指定も自分で "EUC-JP" から "EUC-JPwin" に変えないと
効果ないよ。
97 :
93:2008/08/03(日) 13:29:40 ID:jCxcD2vj0
>>96 やってみたら、'−'の保存/表示はできるようになった。
これで解決かと思ったが、なんだか行位置が変。
'−'が含まれる行の行番号は 3000 のはずなのに 2422 になってしまった。
どうなってるのか調べてみたら、読み書きで途中の行が所々消失している。
中身をぐちゃぐちゃに壊しておいてエラー報告も無し...
かなりやばいことになってるけど、
>>96さんはこれ使ってるの?
>>97 行位置って、どこに表示されるもの?
>93 みたいなエラーメッセージは出なくなってるんだよね?
ちなみに、 >93 見て探してみただけで、普段から使ってるわけじゃない。
でも、ためしに EUC-JPwin で保存して EUC-JP で読み込んでみても普通に
読めてたし、 .jar の中にソースも入ってて、素直な実装だったから問題ないと思ってた。
99 :
93:2008/08/03(日) 14:40:12 ID:jCxcD2vj0
>>98 global optionのgutter設定、line numberlingのチェックONで
各行の行頭に表示される行番号です。
それで、'−'が含まれる行を見ると、
EUC-JPでロードすると3000(既報のとおりここは半角'-'のように見える)なのに
EUC-JPwinでロードすると2422(こちらは期待どおり全角'−'で表示される)になる。
※他エディタでロードすると3000
そのまま別名で保存してWinMergeで差分を確認したところ、ところどころ行が消失していることが判明。
1行だけ消えた箇所もあれば数十行まとめて消えた箇所もある。
(行の途中から消えているようなのもある)
消失するルールまでは調べていないです。
>>99 その報告内容と合わせてソースを見直したところ、マズイコードが見つかった。
EUCjpwinEncoder.encodeLoop() で OVERFLOW を返す場合、実際には入力を
1文字も処理してないのに in.get(chars) した時点で全部読み終わったことになってる。
これだと報告されたとおり、内容がときどき消失することになる。
これはヤバイね。手元でうまくいってたのは、バッファの不足が発生するほどの
長さの無いデータだったからみたい。
実装の方針や、 .jar を置くだけっていう使い方はとても良いと思うんで、なんとか
修正して使えるようにしたいところ。
それまでは、とりあえず U+FF0D を U+2212 に置換してから保存するのが最善手かな。
102 :
93:2008/08/03(日) 19:30:01 ID:jCxcD2vj0