Escribir caracteres especiales en el portapapeles con la línea de comando

Estoy tratando de escribir la cadena あいうえおen mi portapapeles usando la herramienta de línea de comando pbcopy como esta

echo あいうえお | pbcopy

Pero lo que obtengo en mi portapapeles es completamente diferente: „ÅÇ„ÅÑ„ÅÜ„Åà„Åä.

Supuse que esto tenía algo que ver con la codificación, pero la documentación dice que la codificación se basa en la variable de entorno LANG y la mía está configurada en en_EN.UTF-8.

Respuestas (2)

Creo que tu LANG=en_EN.UTF-8es el problema.

Cuando ejecuto este comando

printf あいうえお | LANG=en_EN.UTF-8 pbcopy

y péguelo en un nuevo documento de TextEdit que recibo „ÅÇ„ÅÑ„ÅÜ„Åà„Åä(por cierto, esto es lo que obtiene si toma la codificación UTF-8 de su texto original y lo decodifica como MacRoman; debería poder verificar esto haciendo ) printf あいうえお | iconv -f macroman.

Cuando ejecuto este comando

printf あいうえお | LANG=en_US.UTF-8 pbcopy

y pegarlo en un nuevo documento de TextEdit que obtengo あいうえお, tal como cabría esperar.


Estoy bastante seguro de que en_EN.UTF-8no es una configuración regional válida (por lo tanto, pbcopyel valor predeterminado es MacRoman). ¿ Tal vez quisiste usar en_US.UTF-8(es decir US, no EN)? Puede enumerar las configuraciones regionales válidas ejecutando locale -a. Si solo está interesado en las configuraciones regionales UTF-8 en inglés, puede filtrar la lista de esta manera:

locale -a | grep '^en_.*\.UTF-8$'
Bueno, eso funcionó. No sé por qué mi LANG era en_EN en lugar de en_US. Ni siquiera me di cuenta de que eso podría ser un problema.

Lo más probable es que sea tu Terminal. Ingrese el comando localey vea lo que dice allí. Si no muestra alguna codificación japonesa, probablemente sea eso. Además, intente seleccionar "Unicode (UTF-8)" como codificación de caracteres en Preferencias..., Configuración, Avanzado, Internacional. También juegue con Preferencias / Codificaciones, habilitando las codificaciones japonesas (¿es eso japonés? ¡No sé! LOL).

También asegúrese de configurar LANGUAGE="en_US.UTF-8"su .bash_profile si no aparece cuando usa el localecomando.