3 votos

un error en "pbcopy" usando la llamada a "system ()"

Estoy perdiendo mi cabello por esto. cuando se usa "pbcopy" en c ++ usando la llamada al sistema, no funciona con idiomas extranjeros a menos que se ejecute en admin usando sudo ???

 system("echo привиет как дела") - works output : привиет как дела
system("echo test123 | pbcopy") - works, output to clipboard: test123
system("echo привиет как дела | pbcopy") - does not work, output to clipboard: –ø-Ä–∏–≤–∏–µ-Ç –∫–∞–∫ –¥–µ–ª–∞ 
system("echo привиет как дела | pbcopy") - using sudo to run the c++ app works, output to clipboard: привиет как дела
 

por favor, ayúdame, no quiero usar el objetivo C NSPasteboard

5voto

Jose Chavez Puntos 645

Básicamente lo que sucede es que al ejecutar ese comando echo sin sudo, su configuración regional se establece en el idioma equivocado y el juego de caracteres (porque de las variables de entorno) y cuándo se debe ejecutar con sudo, esto se corrigió, porque entonces se evalúa el entorno de la sudo ed usuario, de modo que el carácter es el conjunto correcto (probablemente a UTF-8).

Esto es exactamente similar a lo que sucede cuando usted utiliza un ordenador con macOS conjunto para una configuración regional de inglés y la configuración de entrada, y luego trató de ejecutar un comando (por ejemplo de un script descargado). Porque el conjunto de caracteres es diferente que iba a funcionar de manera diferente.

Veo las mismas cosas que a menudo aquí en Dinamarca a los conflictos relacionados con ISO-8859-1 en comparación con UTF-8 (aunque UTF-8 se está convirtiendo en más y más ubicuo). Si los conjuntos de caracteres no coinciden, los personajes locales (es decir, åæø ÅÆØ) se convierte en ilegible después de tubería en comandos como pbcopy.

Para evitar esto, ajustar su comando como este cuando se ejecuta en la Terminal o desde un programa:

echo привиет как дела | LANG=en_US.UTF-8 pbcopy

Ajuste el juego de caracteres a UTF-8 significa que una muy amplia gama de personajes son compatibles, y coincide con el conjunto de caracteres que usted probablemente ha establecido Terminal.aplicación.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X