'%'に続く文字が文字化けするNo.24635
DN-ike さん 08/03/14 10:42
 
お世話になります。

次の条件化において、文字化けしており困っています。

%(

上記のように、半角の'%'に続けて、例えば全角の'('を
入力すると、次のように文字化けが起こります。
(全角であれば、他の文字でも文字化けするようです。)

%・i

----------------------------
秀丸エディタバージョン…7.07
エンコードの種類…Shift-JIS

文字化けはしますが、ファイルに保存後、
Windows標準のメモ帳で開くと正常に表示されます。
逆に、メモ帳で"%("と入力してファイルに保存後、
秀丸エディタで開くと文字化けして表示されます。

安定した古いバージョン6.14に戻してみましたが
同様の現象が起こってしまいました。

この件につきまして、解決方法をご教授下さい。
宜しくお願いします。

[ ]
RE:24635 '%'に続く文字が文字化けするNo.24636
秀丸担当 さん 08/03/14 11:03
 

>次の条件化において、文字化けしており困っています。
>
>%(
>
>上記のように、半角の'%'に続けて、例えば全角の'('を
>入力すると、次のように文字化けが起こります。
>(全角であれば、他の文字でも文字化けするようです。)

調べてみたところ、Rubyの強調表示をしているときにそうなるようでした。申し
訳ありません。
Rubyでは%記法で%の後の記号を文字列の区切りとして使えるようで、そのときの
文字列のカラー表示も対応しているのですが、%の次の文字が全角文字の場合、
2バイトのうち1バイト目だけを判断して強調表示して、文字化けして見えてい
ました。見えているだけで、実際の文字は変わりありません。
次のバージョンで文字化けしないように修正させていただきます。

現状で回避するには、[その他]→[ファイルタイプ別の設定]→[デザイン]→[複
数行コメント]→[Ruby]→[文字列を認識]をOFFにしておくと回避できますが、文
字列を認識しないと他の構文解析に影響があるかもしれません。
というか、%記法で全角を使わなければ問題は起きないと思います。

Rubyの文法的には、%記法で全角は使えるのでしょうか。もしご存じでしたら教
えていただけると参考にさせていただきます。

[ ]
RE:24636 '%'に続く文字が文字化けするNo.24641
DN-ike さん 08/03/14 15:35
 
お世話になります。

確かに、Rubyの強調表示がONになっていました。

Rubyユーザーというわけではないのですが、
試しに動作を確認した際にそれをONにして、
そのまま解除するのを忘れてしまっていたのが原因でした。
(恥ずかしながら、秀丸のファイルタイプ別の設定を
余り使いこなせていないもので…)

ですので、問題が起こったファイルはRuby向けのソースではなく、
"進捗50%(云々…)"というような内容の
通常のテキストエディタでした。
Rubyの文法的には、%記法で全角は使えかというご質問に
つきましては、恐れながら小生には分かりかねます。
ごめんなさい。

的確なご指摘を頂きまして、感謝致しております。
ありがとうございました。

[ ]
RE:24636 '%'に続く文字が文字化けするNo.24643
h-tom さん 08/03/14 21:20
 

h-tom です。

>Rubyの文法的には、%記法で全角は使えるのでしょうか。もしご存じでしたら教
>えていただけると参考にさせていただきます。
試してみましたが、使えませんでしたよ。
ruby 1.8.6 と ruby 1.9.0 です。

字句構造 - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/_BBFAB6E7B9BDC2A4.html
を見ると、
>Rubyの現在の実装はASCIIキャラクタセットを用いています。
という記述がありましたが、関係あるかな?

[ ]
RE:24643 '%'に続く文字が文字化けするNo.24648
秀丸担当 さん 08/03/17 09:34
 

>試してみましたが、使えませんでしたよ。
>ruby 1.8.6 と ruby 1.9.0 です。
>
>字句構造 - Rubyリファレンスマニュアル
>http://www.ruby-lang.org/ja/man/html/_BBFAB6E7B9BDC2A4.html
>を見ると、
>>Rubyの現在の実装はASCIIキャラクタセットを用いています。
>という記述がありましたが、関係あるかな?

情報ありがとうございます。
使えませんでしたか。
全角のときは無効ということにしようと思います。

[ ]