Dúvidas sobre character set...urgente!

Pessoal, tenho uma rotina de criptografia e decriptografia em Delphi que usa a tabela ASCII de 8 bits, ou seja, 256 caracteres. A rotina em Delphi criptografa a String “1204” assim:ƒ“¢– enquanto que o a mesma String no java fica assim:??ó?

Acho que o problema está no character set do java. O que devo mudar para que eu possa trabalhar com o mesmo character set do Delphi ou ainda com a tabela ASCII de 8 bits e reconhecer os 256 caracteres?

No Delphi a função Ord(caracter) me dá o valor ASC do caracter e a função Chr(numero) me dá o caracter correspondente ao número e reconhece sempre os 256 caracteres.

No java posso simplesmente fazer isso aí abaixo?

int i = 150;
char c = 'V';

System.out.println("Valor ASC de V: " + (int) c);
System.out.println("Caracter ASC de " + i + ": " + (char) i );

Alguém já trabalhou com essas codificações e pode me dar uma ajuda, estou precisando urgente…

Uma coisa muito importante que vc precisa entender logo de cara: NAO EXISTE ASCII EM JAVA.

Java so usa Unicode, e um encoding para conversao entre Unicode e o resto dos encodings (ou character sets). Internamente, Java usa dois bytes para cada char, e converte de acordo sempre que voce joga uma String pra algum outro lugar (conexao de rede, label, System.out.println, e por ai vai).

O melhor jeito de fazer o que voce quer em Java eh tratar a string que vem do Delphi como uma sequencia de bytes, e converter “na unha”.

Na verdade a sequencia não vem do Delphi…quando o usuário digitar a senha em um formulário de cadastro eu tenho que criptografar essa senha e posteriormente decriptografar para um eventual login. Tanto a aplicação em Delphi quanto a web, podem cadastrar usuários, por isso as rotinas de criptografia e decriptografia devem ser iguais.

Quando vc diz tratar como bytes seria fazer isso aí?

String sentenca = "VÇÁü§";
byte[] ascii = sentenca.getBytes();

Quando vc diz “converter na unha” o que quer dizer?