Они называются "Res _ SChinese.java" и "Res _ TChinese.java"
Я предполагаю, что они должны быть Java но я удивлен, что они находятся в разных кодировках.
Наличие исходных файлов в нескольких кодировках крайне нежелательно. Если вы не знаете, какой набор символов исходного файла имеет, вы можете использовать ICU project библиотеки, чтобы помочь вам guess:
public static void main(String[] args) throws IOException {
InputStream file = new FileInputStream(args[0]);
try {
file = new BufferedInputStream(file);
CharsetDetector detector = new CharsetDetector();
detector.setText(file);
String tableTemplate = "%10s %10s %8s%n";
System.out.format(tableTemplate, "CONFIDENCE",
"CHARSET", "LANGUAGE");
for (CharsetMatch match : detector.detectAll()) {
System.out.format(tableTemplate, match
.getConfidence(), match.getName(), match
.getLanguage());
}
} finally {
file.close();
}
}
Обратите внимание, что количество китайских кодировок он может обнаружить ограничен (ISO-2022-CN, GB18030 and Big5), но по крайней мере, это может помочь вам узнать, все ли просто закодировано в формате преобразования Unicode или что-то в этом роде.
Затмение (JBuilder является Eclipse, основанный сейчас, не так ли?) Можно установить кодировку для отдельных файлов. Вы можете настроить кодирование Eclipse для файла, щелкнув его правой кнопкой мыши и выбрав «Свойства». Кодировка находится в свойствах ресурса. это трудно управлять и не будет применяться к любым внешним инструментам, которые вы используете (например, скрипт сборки Ant).
С помощью внешнего можно скомпилировать файлы с использованием другой кодировки. Например:
javac -encoding GB18030 Foo.java
Но если эти классы имеют взаимозависимости, это будет болезненно быстро.
Столкнувшись с несколькими кодировками, я бы перевел все файлы на одну кодировку. Здесь есть пара вариантов.
Используйте Latin-1 подмножество
Java поддерживает управляющие последовательности Unicode в исходных файлах. Итак, символ Unicode U + 6874 & # x6874; может быть записано как буква \ u6874. Инструмент JDK native2ascii можно использовать для преобразования ваших файлов Java в значения Latin-1.
native2ascii -encoding GB2312 FooIn.java FooOut.java
Результирующие файлы, вероятно, будут скомпилированы в любом месте без проблем, но могут стать кошмаром для тех, кто читает/редактирует файлы.
Использование GB18030
GB18030 огромный набор символов, так что, если это ваше родное кодирование, это может быть идеей использовать это (в противном случае, если бы я шел по этому пути, я хотел бы использовать UTF -8).
Вы можете использовать такой код для выполнения преобразования:
public static void main(String[] args) throws IOException {
changeEncoding("in_cn.txt", Charset.forName("GBK"),
"out_cn.txt", Charset.forName("GB18030"));
}
private static void changeEncoding(String inFile,
Charset inCharset, String outFile, Charset outCharset)
throws IOException {
InputStream in = new FileInputStream(inFile);
Reader reader = new InputStreamReader(in, inCharset);
OutputStream out = new FileOutputStream(outFile);
Writer writer = new OutputStreamWriter(out, outCharset);
copy(reader, writer);
writer.close();
reader.close();
// TODO: try/finally blocks; proper stream handling
}
private static void copy(Reader reader, Writer writer)
throws IOException {
char[] cbuf = new char[1024];
while (true) {
int r = reader.read(cbuf);
if (r < 0) { break; }
writer.write(cbuf, 0, r);
}
}
Если открыть их в блокноте, я могу просматривать их как правильно, даже только с локали, установленной на Китайский (КНР)
Блокнот использует эвристический знак encoding detection механизм. It doesn't always work.
Что это за файлы ресурсов? Свойства файлов? – McDowell
Я не уверен, что они называются «Res_SChinese.java» и «Res_TChinese.java». – krebstar
Если я открою их в «Блокноте», я смогу просматривать их как правильно, так и с помощью языка, установленного на китайском (КНР) .. Именно поэтому вы знаете, что китайский (КНР) - это то, что они используют в материковом Китае, это, как правило, упрощенный китайский язык. Поэтому я не знаю, почему традиционный китайский язык прекрасно проявляет себя. Возможно, он также загружает кодовую страницу для него. Однако в JBuilder я могу получить только упрощенный файл с китайским языком. – krebstar