各IDEでの日本語部分の表示について [Linux]

これは、私としてはlinuxのためのobjective-cからの、えらい脱線した話なのですが、突き詰めていくと色んな障害に当たりました。anjutaを何とかobjective-c組み込みにできないものかと思案していると、同じCの拡張版であるオブジェクト指向言語valaがあることを知り、サンプルをいじりながら、調べているとwindowsのC#のようなものとありましたから、そのサンプルをいじっていたら、日本語の問題にぶつかり、あれレレレ状態になったのですが、次がその事例を上げたものです。

C#のコードはこんな感じです。MainWindow.xaml.cs:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace XamlWindowsApplication1
{
	/// 
	/// Interaction logic for Window1.xaml
	/// 
	public partial class MainWindow : System.Windows.Window
	{
		public MainWindow()
		{
			InitializeComponent();
		}

		private void ButtonClicked(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚Ü‚µ‚œ"); -----この部分
			e.Handled = true;
		}
	}
}

この文字化けした部分を別のアプリで表示すると、

  • notepadの場合:
"ボタンが押されました"
  • eclispseの場合:
"�{�^����������܂���"
  • CodeWarriorの場合:
"ボタンが氓ウれました"

コピペーではこう表示。実際は違うので画像を添付:C#日本語.png

  • bluefishの場合:
"ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚Ü‚µ‚½"
  • emacsの場合:
"ボタンが押されました"
  • anjutaの場合:
"ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚Ü‚µ‚œ"
  • sublimeの場合:
"ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚Ü‚µ‚½"
  • jeanyの場合:
"ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚Ü‚µ‚½"

コピペーではこう表示。実際は違うので画像を添付:C#Geany.png

  • libreofficeの場合:
"�{�^����������܂���"
  • pluma:
anjutaと同じ。
  • windows用emacsで日本語入力ができないemacsの場合:
"ボタンが粥されました"

コピペーではこう表示。実際は違うので画像を添付:C#winemacs.png

ここで、windows用のemacsで開いて、編集用に文字の並びをいじったら、今度保存しないで閉じることができず、やむを得ないので保存して終了をしたらlinuxのemacsで文字化けが起こりました。

どうもこの手の他言語化で起こるバグ(人はそれをウイルスとも呼んでいるらしいですが)は、Shift-JISとUTF8が存在する以上無くならないようです。

筆者はUTF-8しか使いませんが、大方のユーザはshift-jisですから、まだまだこれからの課題になるんでしょうか。

私自身としてはこの事を過去の経験の戒めとすれば、windowsの日本語部分はいじらないようにすることぐらいでしょうか。 これらの比較で、もう一つ気づくことがあります。CWでは、漢字だけ文字化けしています。これを巧く説明できる人がどのくらいいるでしょうか。macでもこれらの事象はありました。当時何故というより大したパソコンも使っていなかったので、素通りしていましたが今振り返ってみると、それらを日本語に編集している人達がwindowsで編集していれば、当然起こり得たわけです、、Macのexamplesだったのに。 これを間違っているかもしれませんが、私なりに説明すると優先順位と文字コードのアドレスがmac linuxとwindowsとでは違っていることに起因していると思います。よくプログラムの世界では優先順位として記号の順番の説明がありますが、MacOSX10.6.8位迄は文字コードを開いてみると若いアドレス順に表記してあって、途中に日本語があり大部後に漢語が出てきます。つまり、その順番こそが優先順位の説明にある順番だったわけです。  文字変換はUTF8は3バイト使うことになっていて、実際は1バイトで済むひらがなも3バイト使われています。ところが、日本語の漢字の場合、ある程度アドレスが繰り上がっていて、実際に3バイト使われているとすると、読み込む順番が windowsの場合1バイトを処理してから、残りの1バイトを処理するとして、これをmacやlinuxに持ち込むと3バイトをいきなり処理するものですから、つまり順番通り処理するものですから、ややもすると、とんでもないアドレスにアクセスすることになる、と言うのが私の認識です。上の例で言うとeclipse, libreofficeが行の最後の位置に表示されこの末尾は文字列の最初であると、言った具合です。最後のwin emacsは2バイト処理なのかあまり良くは分かりません。また余り考えたくもない取るに足りないことかもしれません。

 さて、winの日本語サンプルが使えない以上C#はここまで、文字化けを直しながらの開発は英語を日本語に直すより大変だということで。最初の問題に集中!
nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

Stepbeeds

Cheapest Brand Name Levitra <a href=http://apcialisle.com/#>Cialis</a> Alli Weight Loss In Stock <a href=http://apcialisle.com/#>п»їcialis</a> Priligy Utilisation
by Stepbeeds (2020-03-12 14:14) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。