2012-05-04 66 views
0

私はいくつかの単語を保存し、それぞれのユニコードに割り当てられています。例:データベースに格納されているユニコードにアクセスする方法

arasu "\u0C85\u0CA5\u0CB2\u0CC1"; 
aadalu "\u0C86\u0CA1\u0CB2\u0CC1"; 

上記のユニコードの単語はテキストファイルに保存されています。このテキストファイルから単語とユニコードにアクセスするたびに、単語を "kannada"言語で表示する必要があります。 最初にテキストファイルからユニコードにアクセスし、そのユニコードを1つの文字列に割り当てます。たとえば、最初のユニコード "\ u0C85 \ u0CA5 \ u0CB2 \ u0CC1"にテキストファイルからアクセスして、それをjavaプログラムで読み込んで文字列 'str'に格納するとします。文字列strがユニコード「\ u0C85 \ u0CA5 \ u0CB2 \ u0CC1」を持つようになりました。この文字列を次のコードに渡すと、出力はカンナダ言語で表示されます。しかし今はカナダでは表示されていません。正方形のボックスを表示しています。この問題を解決する方法。私たちを助けてください。

+1

選択しているフォントが、表示しようとしているユニコード文字をサポートしていますか? –

答えて

0

正方形のボックスは、「選択されたフォントがこのグリフをサポートしていない」ことを意味します(通常、グリフは文字です)。

ほとんどのフォントはフル(= all Unicode code points)を提供していません。 1つの理由は、それらの多くが存在することです(Unicode 6.1は249,763コードポイントを認識します)。もう1つは、「Unicode」が進化している標準であり、新しい文字が出てきたときにフォントが魔法のように「更新」されないということです。

解決策は、より多くのグリフを提供するフォントを使用することです。

Windowsの場合は、 "Arial"を試してください。かなり良いUnicodeサポートがあります。

安いテストはHTMLページhttp://www.alanwood.net/unicode/kannada.htmlをダウンロードして、このCSS要素に異なるフォント名を置くことです。このコードを使用して、Arialのを試してみ

td.b {font-size:1.8em;} 

td.b {font-size:1.8em; font-family: Arial;} 

は、フォント名を交換してくださいあなたが結果に満足するまで。フォント名にスペースが含まれている場合は、名前を引用する必要があります。

td.b {font-size:1.8em; font-family: "Times New Roman";} 

を[EDIT]jarnbjoはちょうどあなたが欲しい1はUnicodeのサポートを持っていない場合、ほとんどのブラウザはあなたのために別のフォントを選択することを述べました(またはページをサポートしていない)。

代わりにこれを試してください:font.canDisplay(int codePoint)を呼び出す小さなJavaプログラムを作成します。ここでcodePointは必要な文字でなければなりません。それは共通のキャラクタのように思われるので0x0CC1で始まります。メソッドがtrueを返した場合、フォントはそのグリフをサポートします。

すべてのフォントを取得するには、panel.getGraphis().getAvailableFontFamilyNames()に電話して名前のリストを取得します。それぞれを試して、font.canDisplay(0x0cc1)trueを返すところでそれらを印刷してください。

「ベスト」フォントを使用する場合は、0x0c820xcf2の間の文字数を数え、その番号でフォントのリストをソートします。

+0

HTMLとCSSを使って特定のフォントで利用できる文字を確認することはお勧めできません。文字が要求されたフォントで利用できない場合、ほとんどのブラウザは自動的に別のフォントを選択します。 – jarnbjo

+0

ええと...それは私には新しいものですが、意味があります。フォントに必要な文字があるかどうかを確認する他の簡単な方法は? –

+0

Javaでは、 'java.awt.Font#canDisplay()'メソッドのどれかでフォントに文字が含まれているかどうかを確認することができます。 – jarnbjo

0

それはここでOKになります。

enter image description here

あなたはstrは、あなたが何を期待含まれており、何の文字エンコーディングの問題がときなど存在しないということを確認していますテキストファイルの読み書き

+0

yes出力は上記のようになりますstring strにはユニコードが含まれています最初にテキストファイル(このテキストファイルにはすでにいくつかのユニコードを格納しています)を読み込みます。ファイルを読み込んだ後、結果を文字列strに格納します。次に、jframeを使用してそのUnicodeをテキスト領域に渡しますが、ou tputは、あなたが与えた出力ではなく、四角いボックスを表示します。 – user1340371

0

Java環境に「Tunga」という名前のフォントが含まれておらず、代わりに何らかの種類のデフォルトフォントが必要になる可能性があります(必要なグリフのサポートなし)。

あなたは

Font font= new Font("Tunga",Font.PLAIN,40); 

を実行した後、あなたは、いくつかのフォントを持っていますが、必ずしもそうではない、まさにあなたが尋ねました。それは私ので、「ダイアログ」フォントファミリにフォールバックだ -

Font = java.awt.Font[family=Dialog,name=Tunga,style=plain,size=40] 

System.out.println("Font = "+font); 

例えば、私のマシン上で、それが記録されます:あなたは、あなたがどこにあるか確認するために結果をロギングしてみてください「Tunga」は持っていない。

あなたはあなたに利用可能なフォントを確認するために

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

で見ることができます。

+0

私は私のJava環境でTungaフォントを持っていると確信しています。 – user1340371

+0

ユニコードを読み終えた後、結果は文字列strに格納され、それがtextareaに渡され、出力が間違っています。 – user1340371

関連する問題