java - 两个相同的汉字被认为是不同的

时间:2013-07-09 18:22:37

标签: java chinese-locale string-comparison

我希望这段代码出现两个结果,但我得到一个错误,一个是真的:

import java.util.Scanner;

public class KFCG {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        System.out.print("input:");
        System.out.println("你好".contains(console.nextLine()));
        System.out.println("你好".contains("你"));
    }
}

在System.out上:

input:你
false
true

然后我记得当系统提示我“使用”US-ASCII“字符编码无法映射某些字符时,我选择”另存为UTF-8“将代码保存为UTF-8。要么改变编码要么删除“US-ASCII”字符编码不应该使用的字符。“

所以我尝试将String从控制台编码为UTF-8,但仍然没有按照我的意愿工作:

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Scanner;

public class KFCG {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        System.out.print("input:");
        System.out.println("你好".contains(getUTF8XMLString(console.nextLine())));
        System.out.println("你好".contains("你"));
    }

    private static String getUTF8XMLString(String xml) { 
        StringBuffer sb = new StringBuffer(); 
        sb.append(xml); 
        String xmString = ""; 
        String xmlUTF8= ""; 
        try {
        xmString = new String(sb.toString().getBytes("UTF-8")); 
        xmlUTF8 = URLEncoder.encode(xmString, "UTF-8"); 
        } catch (UnsupportedEncodingException e) {}
        // return to String Formed 
        return xmlUTF8;
    } 
}

在System.out上:

input:你
false
true

我怎样才能得到两个真理?也就是说,如何比较从控制台读取的中文字符和程序或.txt文件中的字符?

0 个答案:

没有答案