Предложение от Cliff Berg
Java поддерживает Unicode следующим образом:
Тип данных "char" определен так, чтобы быть типом Unicode (короче, он есть Unicode).
Строки "Strings", как только они были созданы они сразу же и становятся основаными на Unicode.
Идентификаторы Java могут содержать Unicode символы. Вы можете определить Unicode символ через использование эскейп последовательности \u.
Таким образом, если вы читаете и пишите данные используя типовые методы классов DataInputStream и DataOutputStream, вы будете способны сохранять и восстанавливать данные в формате Unicode (разумеется и другие типы данных Java).
Для записи данных Ascii вы можете использовать методы FileOutputStream.writeChars() и DataOutputStream.writeBytes().
Замечание: чтобы создать DataOutputStream, вы должны сперва создать FileOutputStream, и только затем передать его конструктору DataOutputStream.
// write unicode data as unicode
FileOutputStream ufos = new FileOutputStream("test.ucd");
DataOutputStream udos = new DataOutputStream(ufos);
udos.writeChars("ABCDE")
// writes Unicode
udos.close();
// write unicode data as ascii
FileOutputStream xfos = new FileOutputStream("test.xxx");
DataOutputStream xdos = new DataOutputStream(xfos);
xdos.writeBytes("ABCDE");
// writes Ascii
xdos.close();
// write ascii data
FileOutputStream afos = new FileOutputStream("test.asc");
byte abytes[] = {65, 66, 67, 68, 69};
// "ABCDE"
afos.write(abytes);
// writes bytes - in this case Ascii
afos.close();
Так же класс StreamTokenizer предпологает ввод Ascii. Поэтому,
// tokenize an ascii file
FileInputStream fis = new FileInputStream("test.asc");
StreamTokenizer tokenizer = new StreamTokenizer(fis);
int token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "ABCDE"
fis.close();
// tokenize an ascii file
// This also works on a DataInputStream
fis = new FileInputStream("test.asc");
DataInputStream dis = new DataInputStream(fis);
tokenizer = new StreamTokenizer(dis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "ABCDE"
dis.close();
// attempt to tokenize a Unicode file
fis = new FileInputStream("test.ucd");
tokenizer = new StreamTokenizer(fis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "A" - the tokenizer interprets the high byte of
// "B" as whitespace
fis.close();
// attempt to tokenize a Unicode file by creating a DataInputStream
fis = new FileInputStream("test.ucd");
dis = new DataInputStream(fis);
tokenizer = new StreamTokenizer(dis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "A" - the tokenizer interprets the high byte of
// "B" as whitespace
dis.close();
Предложение от Dave Forster
Вы можете несомненно вводить данные в формате unicode в ваших Java программах, но вы можете это делать используя символы ASCII. Следующие пример должен работать:
public class fiddle {
public static void main(String arg[]) {
int \u1261 = 1;
System.out.println("\\"+"u1261 is "+\u1261);
}
}
(1261 вроде как японский или китайский символ)
Java поддерживает Unicode следующим образом:
Тип данных "char" определен так, чтобы быть типом Unicode (короче, он есть Unicode).
Строки "Strings", как только они были созданы они сразу же и становятся основаными на Unicode.
Идентификаторы Java могут содержать Unicode символы. Вы можете определить Unicode символ через использование эскейп последовательности \u.
Таким образом, если вы читаете и пишите данные используя типовые методы классов DataInputStream и DataOutputStream, вы будете способны сохранять и восстанавливать данные в формате Unicode (разумеется и другие типы данных Java).
Для записи данных Ascii вы можете использовать методы FileOutputStream.writeChars() и DataOutputStream.writeBytes().
Замечание: чтобы создать DataOutputStream, вы должны сперва создать FileOutputStream, и только затем передать его конструктору DataOutputStream.
// write unicode data as unicode
FileOutputStream ufos = new FileOutputStream("test.ucd");
DataOutputStream udos = new DataOutputStream(ufos);
udos.writeChars("ABCDE")
// writes Unicode
udos.close();
// write unicode data as ascii
FileOutputStream xfos = new FileOutputStream("test.xxx");
DataOutputStream xdos = new DataOutputStream(xfos);
xdos.writeBytes("ABCDE");
// writes Ascii
xdos.close();
// write ascii data
FileOutputStream afos = new FileOutputStream("test.asc");
byte abytes[] = {65, 66, 67, 68, 69};
// "ABCDE"
afos.write(abytes);
// writes bytes - in this case Ascii
afos.close();
Так же класс StreamTokenizer предпологает ввод Ascii. Поэтому,
// tokenize an ascii file
FileInputStream fis = new FileInputStream("test.asc");
StreamTokenizer tokenizer = new StreamTokenizer(fis);
int token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "ABCDE"
fis.close();
// tokenize an ascii file
// This also works on a DataInputStream
fis = new FileInputStream("test.asc");
DataInputStream dis = new DataInputStream(fis);
tokenizer = new StreamTokenizer(dis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "ABCDE"
dis.close();
// attempt to tokenize a Unicode file
fis = new FileInputStream("test.ucd");
tokenizer = new StreamTokenizer(fis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "A" - the tokenizer interprets the high byte of
// "B" as whitespace
fis.close();
// attempt to tokenize a Unicode file by creating a DataInputStream
fis = new FileInputStream("test.ucd");
dis = new DataInputStream(fis);
tokenizer = new StreamTokenizer(dis);
token = tokenizer.nextToken();
System.out.println("token=" + tokenizer.sval);
// prints "A" - the tokenizer interprets the high byte of
// "B" as whitespace
dis.close();
Предложение от Dave Forster
Вы можете несомненно вводить данные в формате unicode в ваших Java программах, но вы можете это делать используя символы ASCII. Следующие пример должен работать:
public class fiddle {
public static void main(String arg[]) {
int \u1261 = 1;
System.out.println("\\"+"u1261 is "+\u1261);
}
}
(1261 вроде как японский или китайский символ)