He usado algunos buenos lenguajes de programación a lo largo de los años y soy un lingüista de sillón y colaborador de Wiktionary. He estado haciendo algunas de mis propias herramientas para buscar Wiktionary desde la línea de comandos, pero me encontré con un problema sorprendente.¿Algún idioma hace Unicode y multiplataforma correctamente y completamente?
Neither Perl nor Python can output Unicode to the console natively under both *nix and Windows (aunque hay varias soluciones). La razón principal es que los sistemas operativos * nix como su Unicode en UTF-8 y Windows le gusta su Unicode en UTF-16. Pero también parece que Windows makes it very difficult to use wide characters with the console even though both the console and wprintf are wide character native.
Así que la pregunta es, ¿la situación es mejor si miro más allá de estos idiomas en Java, C#, Scala, etc. ¿O hay algún lenguaje de script que comenzó en Windows y luego fue portado a * nix?
Aquí es un poco de pseudocódigo ideales:
function main()
{
print(L"hello, 世界");
}
La respuesta final es que cualquier lenguaje necesitaría llamar 'WriteConsoleW' en lugar de' WriteFile', rompiendo una barrera de abstracción ... así que no es realmente un problema de lenguaje, sino de diseño de biblioteca. – Mehrdad
Podría estar inclinado a investigar sobre Java, ya que originalmente estaba destinado a la independencia de la plataforma y el manejo de cadenas se construyó alrededor de unicdode. Los archivos de origen son unicode, por lo que su código de psuedo ideal podría compilarse con un poco de ajuste. – Jimmy
@Mehdrad: o Microsoft posiblemente puede arreglar wprintf et al para que pueda imprimir cadenas de caracteres anchos directamente sin conversión, a menos que esto sea un error en la especificación de las configuraciones regionales wprintf o POSIX de C o algo así? Alternativamente, los lenguajes de programación podrían agregar una capa de abstracción entre su función de impresión y WriteFile/WriteConsoleW o cualquier API de la que dependan. – hippietrail