0

アラビア語では、結合された単語を形成する場所に応じて、文字が異なる形式をとります (筆記体に似ています)。ただし、Java では一部の単語が正しく表示されません。それらは正しい形をとっているように見えますが、正しく組み合わされていません。JOptionPane.showMessageDialog の結果は次のとおりです。

[1] (編集: 以下のリンク、担当者が少ないと写真を追加できません)

これらの文字は左から右に書かれた MSJD であり、最後の 2 つの J と D が実際に結合したことに注意してください。

以下は、Urdu Typesetting フォント (私のプログラムで使用しているフォントと同じです) を使用してメモ帳に記述した場合の正しい形式です۔

[2] (編集: 以下のリンク)

最初は、キーボードからの文字が Unicode (\uXXXX) エスケープ コマンドと異なっていたためだと思いました。特に、組み合わせた場合、それぞれの文字がまったく同じ形にならないことがわかるため. キーボードのウルドゥー語設定を使用してメモ帳に入力しましたが、JCreator では機能しません。エスケープコマンドを使用していました。

しかし、キーボードのウルドゥー語設定のユニコードを調べたところ、JCreator で使用していたコードとまったく同じでした。次に、UTF-8 でエンコードされる (JCreator は Cp1252 を使用する) Netbeans を使用してみました。今回は、エスケープ コマンドを使用する代わりにコードに直接文字を入力し、上の最初の画像とまったく同じ結果を得ました。

すべての単語がこの動作をするわけではありません。Baba ب ا ب ا は正しく結合します。

Java がこれらの単語を正しく組み合わせないのはなぜですか?どうすれば修正できますか? 前もって感謝します!

[1] http://i.stack.imgur.com/HEj9y.png [2] http://i.stack.imgur.com/TOUPF.png

編集:ああ、ここに文字列と、フォントを設定するために使用したコードがあります:

javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
4

1 に答える 1

0

私はアラビア語を知りません:)私のPCではコード

import java.awt.Font;
import javax.swing.JOptionPane;

public class TestArabic
{

    public static void main(String[] args)
    {
        javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
        JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
    }    
}

次の結果を生成しますここに画像の説明を入力

msjdとmsjd のアラビア語キーボードで生成されるものを見てみましょう。JOptionPane.showMessageDialog と同じです。ここに画像の説明を入力ここに画像の説明を入力

于 2014-11-28T11:23:21.573 に答える