微軟ピンイン輸入法2.0を使用して、中国語テキストをFLASHで作成したテキストフィールドに入力したいのですが、ピンイン入力したあと、文字確定(ENTER)すると?に置き換わったり違う文字に変わったりしてしまいます。

例をあげると「diao4yu2dao3」と入力すると未確定のときは「釣魚島(←ここでは日本語にしています)」と出ますがENTER確定後は「???」になってしまいます。

FLASH以外のHTMLのテキストフィールドやGoogleToolBarなどでは文字化けせずそのまま入力されます。
上記にはどのような原因が考えられますでしょうか?

環境
OS:Win2000+SP4+WindowsUpdate
ブラウザ:IE6、FireFoxなど
FlashPlugin:7.0.19.0
MacromediaFlashMX2004Pro
指定フォント:SimSun
System.useCodepage = false;

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/11 15:50:20
  • 終了:--

回答(2件)

id:horosuke No.1

horosuke回答回数100ベストアンサー獲得回数02005/03/11 21:47:01

ポイント30pt

対策は別として、自分も同様の経験をしたことがあります。(Flashではありませんが)

恐らく、「IMEからデータを受取る側のアプリの内部文字コードがUTF-8ではない」とか。

結局、そのページの作成手法によるのですが、IEの中にはいろいろなアプリが存在するわけで、

それぞれが異なる文字コードで動いていると、ダメみたいです。

大丈夫な場合もあるようですが。

確認方法は、IMEを停止させた状態で、アルファベットとか数字などを入力させて、

そのまま通るようであれば、文字コードの違いだと思います。

簡単にできる再現確認

 1)簡単なwebページを作成する。

  その際、漢字表現(=全角文字)を含むHTMLを保存する際、文字コードにUTF-8を指定。

  そこから外部のJavaScriptを呼び出すようにしておく。

 2)そのHTMLから呼び出されるJavaScriptを、シフトJISで作っておく。

結果)HTMLから呼び出されたJavaScriptでは、文字コードをシフトJISで扱うので、

  webページを開くと文字が化ける箇所(=JavaScriptが出力するメッセージの部分)が化ける。

という具合です。

とにかく、2バイト文字コードに対する扱いがまちまちなのが原因かと思われ。

で、提案ですが、呼び出す側のHTMLで、文字コード体系をUTF-8に変更してみては?

方向違いの発言でしたらご容赦くださいませ。

id:tiga

私もそう思ってHTMLもUTF-8にしてみたりもしたのですが変わりませんでした。

SWFの内部コードはデフォルトでUTF-8のはずですが、一応念のためにSystem.useCodepage = false;と書いてもみましたがそれもダメでした。

しかし、微軟ピンイン輸入法2.0のプロパティでインライン変換からシステムライン変換に変更してみたら文字化けが無くなりました。

ですが、できればデフォルトのままインライン変換で使いたいです。(;_;)

2005/03/12 00:17:09
id:ilovegarbage No.2

ilovegarbage回答回数38ベストアンサー獲得回数02005/03/11 23:54:44

ポイント30pt

文字コードの問題ですよね。

FlashはUnicodeを使うはずですので、EmEditorなどUnicodeの扱えるエディタを用いて入力してから一旦保存し、Unicodeに変換してから文字をコピー&ペーストしてはいかがでしょうか。

以前日本語のWindowsXPのIMEに中国語(簡体字)の設定をしてFlash(MX2004Proです)を作ったことがありますが、このときは文字化けしませんでしたよ。

id:tiga

書き忘れていました。

静的テキスト・ダイナミックテキスト・テキスト入力それぞれ、初めから入力していたりスクリプトから流し込むものは文字化けしませんでした。

テキスト入力でユーザーにピンイン入力させた場合のみ文字化けしてしまいます。

2005/03/12 00:20:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません