Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

476
Vistas
JavaScript equivalente a String.getBytes de Java (StandardCharsets.UTF_8)

Tengo el siguiente código Java:

 String str = "\u00A0"; byte[] bytes = str.getBytes(StandardCharsets.UTF_8); System.out.println(Arrays.toString(bytes));

Esto genera la siguiente matriz de bytes:

 [-62, -96]

Estoy tratando de obtener el mismo resultado en Javascript. He probado la solución publicada aquí:

https://stackoverflow.com/a/51904484/12177456

 function strToUtf8Bytes(str) { const utf8 = []; for (let ii = 0; ii < str.length; ii++) { let charCode = str.charCodeAt(ii); if (charCode < 0x80) utf8.push(charCode); else if (charCode < 0x800) { utf8.push(0xc0 | (charCode >> 6), 0x80 | (charCode & 0x3f)); } else if (charCode < 0xd800 || charCode >= 0xe000) { utf8.push(0xe0 | (charCode >> 12), 0x80 | ((charCode >> 6) & 0x3f), 0x80 | (charCode & 0x3f)); } else { ii++; // Surrogate pair: // UTF-16 encodes 0x10000-0x10FFFF by subtracting 0x10000 and // splitting the 20 bits of 0x0-0xFFFFF into two halves charCode = 0x10000 + (((charCode & 0x3ff) << 10) | (str.charCodeAt(ii) & 0x3ff)); utf8.push( 0xf0 | (charCode >> 18), 0x80 | ((charCode >> 12) & 0x3f), 0x80 | ((charCode >> 6) & 0x3f), 0x80 | (charCode & 0x3f), ); } } return utf8; } console.log(strToUtf8Bytes("h\u00A0i"));

Pero esto da esto (que es un https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array ):

 [194, 160]

Esto es un problema para mí, ya que estoy usando el motor graal js y necesito pasar la matriz a una función java que espera un byte[] , por lo que cualquier valor en la matriz > 127 generará un error, como se describe aquí:

https://github.com/oracle/graal/issues/2118

Tenga en cuenta que también probé la clase TextEncoder en lugar de la función strToUtf8Bytes como se describe aquí:

java string.getBytes("UTF-8") equivalente de javascript

pero da el mismo resultado que el anterior.

¿Hay algo más que pueda probar aquí para que pueda obtener JavaScript para generar la misma matriz que Java?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El resultado es el mismo en términos de bytes, JS solo tiene como valor predeterminado bytes sin firmar . U en Uint8Array significa "sin firmar"; la variante firmada se llama Int8Array .

La conversión es fácil: simplemente pase el resultado al constructor Int8Array :

 console.log(new Int8Array(new TextEncoder().encode("\u00a0"))); // Int8Array [ -62, -96 ]

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda