私はJavaサーブレットを使用しています。私のデータベースでは、一部の文字列に Å、Ä、Ö の文字が含まれています。これらの文字列にこれらの特殊文字が含まれていることを確認すると、常に false になります。文字列にこれらの特殊文字が含まれているかどうかを確認するにはどうすればよいですか。私はエクリプスを使用しています。前もって感謝します。
2723 次
3 に答える
0
入力ストリームのエンコーディングは正しくなければなりません。Java文字列はすでにエンコードされています。読者が使用する場合の以下の例がinputString
非常にうまく機能することを確認してください。ただし、外部入力ストリームの場合、バイトはリーダーにエンコードする必要があります(したがってjava.lang.String
)。何も渡さない場合、Javaはランタイムプラットフォームに依存するデフォルトの文字セットを使用します。文字セットがアプリケーションに固有であることがわかっている場合は、引数として渡す必要があります。ASCII
一部の文字セットは1バイト( )をフィードし、一部は1または2バイト(UTF8
)をフィードし、一部は2バイト()をフィードするため、注意してくださいUTF16
。
// String charset = "UTF-8";
// Reader inputReader = new InputStreamReader(new FileInputStream("xxxx"), charset);
String inputString = "Å, Ä or Ö";
StringReader stringReader = new StringReader(inputString);
Reader reader = stringReader;
int data = reader.read();
while (data != -1) {
char dataChar = (char) data;
int codeChar = (int) data;
System.out.println("char=" + dataChar + ", code=" + codeChar);
data = reader.read();
}
String toReplace = "Å";
String stringAfter = inputString.replace(toReplace, "B");
System.out.println(stringAfter);
// prints:
char=Å, code=197
char=,, code=44
char= , code=32
char=Ä, code=196
char= , code=32
char=o, code=111
char=r, code=114
char= , code=32
char=Ö, code=214
B, Ä or Ö
于 2012-09-06T11:29:51.993 に答える
0
string.contains(s)メソッドを使用できます。サンプルを参照してください。
String x = "aaa Å bbb";
if(x.contains("Å")){
System.out.println("OK");
}
于 2012-09-06T11:37:04.693 に答える
0
これらは拡張 ASCII 文字です。
byte[] data=new byte[1];
data[0]=(byte)197; 197 is for Å
String char1=new String(data,"ISO-8859-1");
上記のように文字列「char1」を作成し、対象文字列と比較することができます。
ルックアップを取得するためのコード:
for( int i=127;i < 256;i++)
{
byte[] char= new byte[1];
char[0]= (byte)i;
System.out.println("Data : "+char+","+
new String(char, "ISO-8859-1")+","+i); //'i' will give u code. 197 is for Å so on.
}
Java SE 6 でサポートされている Charset の表を参照してください。
US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1 ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8 Eight-bit UCS Transformation Format
UTF-16BE Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16 Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark
于 2012-09-06T11:10:54.557 に答える