Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Hybrid View

  1. #1
    Sia che passi una string rappresentante l'emoticon che i chars rappresentanti la stringa stessa, il risultato è lo stesso identico...

    E soprattutto, sbagliato! Ma com'è possibile? Mi sto perdendo qualcosa...

    Questo è il link che prendo in esame:

    http://www.utf8-chartable.de/unicode...l?start=128512

    Prima riga, maledetta emoticons che ride...

    Come faccio a passare da Unicode a codifica UTF-8 ottenendo il risultato desiderato, considerando che ho testato finora tutti i metodi elencati ma senza apparentemente ottenere il risultato esatto?

    PS: dà sempre come risultato EDA0BDEDB883

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    public class FormattaInHex {
       public static void main(String[] args) throws Exception {
          String str = "\uD83D\uDE00";
          System.out.println("Stringa originale: " + str);
          System.out.println();
          System.out.println("Convertita: " + toHex(str.getBytes("UTF-8")) );
       }
    
       private static String toHex(byte[] b) {
            StringBuilder ret = new StringBuilder();
            int temp = 0;
            for(int i=0; i<b.length; i++) {
                temp = b[i];
                if (temp < 0) temp += 256;
                ret.append( (temp < 16) ? "0" + Integer.toHexString(temp) : Integer.toHexString(temp) );
            }
    
            return ret.toString();
       }
    }

    L'output (sulla console di Windows, che quindi non supporta la visualizzazione dei caratteri unicode):

    codice:
    Stringa originale: ?
    
    Convertita: f09f9880

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Stringa originale: í ½í¸€
    Convertita: eda0bdedb880

    Questo l'output, semplicemente copiando il codice, cambiando unicamente StringBuilder in StringBuffer.

    Questo perché sto utilizzando il compilatore versione 1.4, essendo in Midlet profile.

    E' possibile che, utilizzando una JVM di 3 versioni inferiore (immagino tu stia utilizzando Java 7), ottenga un risultato così diverso?

    E nel caso, come potrei ottenere quanto detto?

    Inoltre, è evidente che ci sia qualcosa di diverso: il tuo output è di 4 byte, il mio di 6....

  4. #4
    Mi sono quasi arreso, sono sincero...

    Non vedo soluzione...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.