2

我正在使用 java servlet。在我的数据库中,一些字符串包含字符 Å、Ä 和 Ö。当我检查这些字符串是否包含这些特殊字符时,它总是错误的。如何检查字符串是否包含这些特殊字符。我正在使用 Eclipse。提前致谢。

4

3 回答 3

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 支持的字符集:来源:http ://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html

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 回答
0

输入流的编码必须正确。Java 字符串已经编码。看下面的例子,当读者使用时inputString效果很好。但是在外部输入流的情况下,字节需要被编码到阅读器(因此java.lang.String)。当您什么都不传递时,Java 使用依赖于运行时平台的默认字符集。当您知道字符集特定于应用程序时,您应该将其作为参数传递。要小心,因为有些字符集输入一个字节 ( ASCII),有些输入一个或两个字节 ( UTF8),有些输入两个字节 ( 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 回答