jEdit - Programmer's Text Editor

このエントリーをはてなブックマークに追加
93名無しさん@お腹いっぱい。
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名無しさん@お腹いっぱい。:2008/08/02(土) 16:33:06 ID:wATG2zt90
95名無しさん@お腹いっぱい。:2008/08/02(土) 17:58:53 ID:I/IX1N9b0
>>94
ありがとう。

でも、eucjpwin.jarをJRE をインストールしたフォルダの lib\ext に入れ、
PC再起動からやりなおしても駄目でした(症状に変化なし)。orz
96名無しさん@お腹いっぱい。:2008/08/02(土) 18:06:51 ID:wATG2zt90
>>95
その jar を置くと "EUC-JPwin" っていう新しいエンコーディングが使えるようになるもの
だから、エンコーディングの指定も自分で "EUC-JP" から "EUC-JPwin" に変えないと
効果ないよ。
9793:2008/08/03(日) 13:29:40 ID:jCxcD2vj0
>>96
やってみたら、'−'の保存/表示はできるようになった。
これで解決かと思ったが、なんだか行位置が変。
'−'が含まれる行の行番号は 3000 のはずなのに 2422 になってしまった。

どうなってるのか調べてみたら、読み書きで途中の行が所々消失している。
中身をぐちゃぐちゃに壊しておいてエラー報告も無し...

かなりやばいことになってるけど、>>96さんはこれ使ってるの?
98名無しさん@お腹いっぱい。:2008/08/03(日) 13:38:22 ID:6uKHENOW0
>>97
行位置って、どこに表示されるもの?
>93 みたいなエラーメッセージは出なくなってるんだよね?

ちなみに、 >93 見て探してみただけで、普段から使ってるわけじゃない。
でも、ためしに EUC-JPwin で保存して EUC-JP で読み込んでみても普通に
読めてたし、 .jar の中にソースも入ってて、素直な実装だったから問題ないと思ってた。
9993:2008/08/03(日) 14:40:12 ID:jCxcD2vj0
>>98
global optionのgutter設定、line numberlingのチェックONで
各行の行頭に表示される行番号です。

それで、'−'が含まれる行を見ると、
EUC-JPでロードすると3000(既報のとおりここは半角'-'のように見える)なのに
EUC-JPwinでロードすると2422(こちらは期待どおり全角'−'で表示される)になる。
※他エディタでロードすると3000
そのまま別名で保存してWinMergeで差分を確認したところ、ところどころ行が消失していることが判明。
1行だけ消えた箇所もあれば数十行まとめて消えた箇所もある。
(行の途中から消えているようなのもある)
消失するルールまでは調べていないです。
100名無しさん@お腹いっぱい。:2008/08/03(日) 15:14:36 ID:6uKHENOW0
>>99
その報告内容と合わせてソースを見直したところ、マズイコードが見つかった。

EUCjpwinEncoder.encodeLoop() で OVERFLOW を返す場合、実際には入力を
1文字も処理してないのに in.get(chars) した時点で全部読み終わったことになってる。
これだと報告されたとおり、内容がときどき消失することになる。

これはヤバイね。手元でうまくいってたのは、バッファの不足が発生するほどの
長さの無いデータだったからみたい。

実装の方針や、 .jar を置くだけっていう使い方はとても良いと思うんで、なんとか
修正して使えるようにしたいところ。

それまでは、とりあえず U+FF0D を U+2212 に置換してから保存するのが最善手かな。
101名無しさん@お腹いっぱい。:2008/08/03(日) 18:27:54 ID:6uKHENOW0
>>99
作者さんにも了解がもらえたんで、修正してうpしてみた。テストしてもらえると助かる。
http://uproda.2ch-library.com/src/lib043213.bin.shtml
ファイル名が変わっちゃってるけど、 eucjpwin.jar にリネームして同じように使えるはず。
10293:2008/08/03(日) 19:30:01 ID:jCxcD2vj0
>>101
> http://uproda.2ch-library.com/src/lib043213.bin.shtml
使ってみました。

問題の出るファイルを
EUC-JPwinでロードすると'−'が行番号3000の位置に全角で期待どおり表示されました。
別名で保存し、元のファイルと比較してみたところ期待どおり同一になりました。

問題は解消、OKです!d