¿Cuál es la forma más sencilla de convertir un punto de código Unicode en una secuencia de bytes UTF-8 en C? La única forma en que viene a la mente es usar iconv
para mapear desde la página de códigos UTF-32LE a UTF-8, pero eso parece exagerado.Forma más sencilla de convertir punto de código Unicode en UTF-8
Respuesta
La conversión Unicode no es una tarea sencilla. Usar iconv no me parece exagerado. Tal vez haya una versión de biblioteca de iconv que puede usar para evitar hacer una llamada a system(), si eso es lo que quiere evitar.
Ya estaba planeando usar la biblioteca. –
Para esta dirección, es una tarea extremadamente simple. No se necesita biblioteca Además, 'iconv' se refiere tanto a una interfaz C como a un programa de utilidad en POSIX. Sospecho que OP estaba hablando de la interfaz C, lo que sería una muy buena opción para esto, pero escribirlo tú también no es difícil. Es la otra dirección (UTF-8 a puntos de código) que es fácil de estropear. –
UTF8 funciona codificando la longitud del punto de código codificado en los bits más altos de los bytes codificados. ver http://en.wikipedia.org/wiki/UTF-8#Description
Encontré esta pequeña función en C aquí http://www.deanlee.cn/programming/convert-unicode-to-utf8/, aunque no lo probé.
Tenga en cuenta que este código solo maneja puntos de código por debajo de 0x10000 (ya que wchar_t en Windows es realmente UTF-16). –
Enlace al código en el camino atrás de la máquina: http://web.archive.org/web/20100305210636/http://www.deanlee.cn/programming/convert-unicode-to-utf8/ – Eloff
¿Puedo sugerir ICU? Es una forma razonablemente "estándar de la industria" de manejar problemas con i18n.
No he usado la versión C yo mismo, pero sospecho que ucnv_fromUnicode podría ser la función que buscas.
No voy a introduzca dependencias en un nuevo conjunto de bibliotecas no proporcionadas por el sistema solo para esta tarea. Gracias por la sugerencia, sin embargo. –
- 1. Convertir punto de código unicode en hex UTF8 en python
- 2. Cómo convertir UTF8 a Unicode
- 3. Forma más sencilla de crear un HWND
- 4. Python punto de código Unicode de caracteres Unicode
- 5. Convertir un punto de código unicode en un carácter de cadena en Ruby
- 6. WebClient Unicode - ¿Qué UTF8?
- 7. ¿Cuál es la forma más sencilla de convertir char [] a/de tchar [] en C/C++ (ms)?
- 8. forma más sencilla de insertar Perl en html
- 9. forma más sencilla de repetir un video en un MediaElement
- 10. forma más sencilla de analizar una fecha en Javascript
- 11. ¿Forma más sencilla de publicar en Zeroconf/Bonjour?
- 12. forma más sencilla de comprobar si hay espacios en ruby
- 13. Forma más sencilla de implementar archivos PDF en Tridion 2011
- 14. forma más sencilla de consulta XML en Java
- 15. Cambiar ID en forma sencilla
- 16. Traducir punto de código Unicode (UTF-8) a bytes
- 17. ¿Una forma más sencilla de verificar los parámetros?
- 18. ¿Cuál es la forma más sencilla de convertir cadenas separadas por comas a int []?
- 19. Git: forma más sencilla de aplastar compromete el maestro
- 20. ¿Hay alguna forma más sencilla de hacer esto?
- 21. ¿Forma más sencilla de agregar la cookie/variable XDEBUG_SESSION_START?
- 22. Cómo convertir una cadena a UTF8?
- 23. Symfony2: forma más sencilla de obtener las direcciones URL REST
- 24. forma más sencilla de gráficos 3D superficie dada puntos 3d
- 25. ¿Cuál es el punto de código Unicode para '¿'?
- 26. ¿Cuál es la forma más sencilla de crear una ventana con forma en wxPython?
- 27. Forma más sencilla para enviar mensajes cortos utilizando TCP/IP
- 28. Convertir UTF8 en valores numéricos en Perl
- 29. ¿Convertir cadena latin1 a utf8?
- 30. ¿Cómo convertir código de notación unicode javascript a utf-8?
Terminé yendo con iconv de todos modos. Puede parecer exagerado, pero también parece ser la única solución real sin introducir dependencias externas. –
Entonces, ¿por qué no aceptar la respuesta de @JesperE y subirla? – tvanfosson
Pensé que "ya no es relevante" se usa cuando se soluciona un error en un producto, o se introduce una mejor herramienta, no cuando asker ya no está interesado en la respuesta ... –