Funcão que retorne o codigo da tabela UTF-8

13 respostas
mariofcc

Gostaria de saber se existe uma função no JAVA pra retornar a código da tabela UTF-8 correspondente de um letra ou palavra.

Estou usando esse código mas ele naum esta voltando o código correto:

package com.converte;

import java.io.UnsupportedEncodingException;

public class converteUTF {
	public static void main(String[] args) 
	{
		String teste = "大";
		try {
			String teste1 = new String(teste.getBytes("utf-8"));
			System.out.println(teste1);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
}

Abraco

13 Respostas

T

O código UTF-8 correspondente a "大" tem 3 bytes; não é dessa maneira que você conseguirá obtê-lo. É assim:

byte[] bytes = "大".getBytes ("UTF-8");
for (int i = 0; i &lt bytes.length; ++i) {
    System.out.printf (" %02X", bytes[i] & 0xFF);
}
Paulo_Silveira

thingol nao da tempo pra gente responder, e ainda responde melhor do que a gente responderia :slight_smile:

mariofcc

ele da erro no printf.

Tentei colocar println e tb da erro porcausa do metodo que so suporta String e naum String e Object[].

mariofcc

to usando esse site http://www.pinyin.info/tools/converter/chars2uninumbers.html
para verificar se o dado retornado esta correto…

abraco

T

Tá bom, vamos usar o método brutal então. (Nunca sei se é toUpperCase ou toUppercase).

byte[] bytes = "大".getBytes ("UTF-8");
for (int i = 0; i &lt bytes.length; ++i) {
    System.out.print (Integer.toHexString (0x100 | (bytes[i] & 0xFF)).substring(1).toUpperCase());
}
T

Se você quer o valor Unicode, que é o que o site lhe fornece, você tem de usar:

char[] chars = "大".toCharArray();  
for (int i = 0; i &lt chars.length; ++i) {  
    System.out.print (chars[i] & 0xFFFF);  
}
mariofcc

Muito bom…
agora sim, mas o problema e que naum bate com o resultado dado no site.

no site volta: &#22823

no programa ta retornando: E5A4A7

E o UTF-8 ate onde eu sei retorna um codigo numerico.

por enquanto valeu…
agora so falta da o resultado correto isso se o site estiver correto tb…kkkk

mariofcc

o site retorna: “&#22823

mariofcc

no site retorna:" & # 2 2 8 2 3" sem os espaços

mariofcc

no site retorna:" & # 2 2 8 2 3" sem os espaços.

T

Amigo, vou repetir mais uma vez:

Se você quer o valor Unicode, que é o que o site lhe fornece, você tem de usar:

char[] chars = "大".toCharArray();  
for (int i = 0; i < chars.length; ++i) {  
    System.out.println ("&#" + (chars[i] & 0xFFFF) + ";");  
}
mariofcc

Muito obrigado…

Mal ai naum precisa fica nervoso, naum tinha visto a sua resposta.

Valeu mesmo…

mariofcc

E o inverso vc sabe?
transforma esse codigo unicode em letra

Criado 13 de setembro de 2007
Ultima resposta 13 de set. de 2007
Respostas 13
Participantes 3