FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
String, AnsiString, Ascii y la madre de Embarcadero
Buenas a todos.
No se si os habrá pasado a vosotros, pero a mi me tiene frito y no encuentro solución (de momento), además, creo que la culpa es de mis padres (R.I.P.) y de la madre que pario a los de Embarcadero. El caso es que mi nombre es César, si, con acento en la letra E y lógicamente lo uso como tal (se que algún forero es muy crítico con los acentos) ¿Que me pasa? que si mando una cadena con mi nombre a ... digamos un socket no se envia "César" sino "CÚsar', ¿Comorrrr? Investigo, investigo, mucho, pero mucho. Y la conclusión a la que he llegado es la siguiente: Que necesito enviar la siguiente secuencia ASCII (67, 130, 115, 97, 114) osea "César" y que me pasa ... que sale (67, 233, 115, 97, 114) osea "CÙsar". Da igual como defina la cadena, ShortString, AnsiString, String, UnicodeString, WideString, array of char, array of byte, array of word, siempre que miro el carácter me devuelve 233 en vez de 130. ¿Se os ocurre como solucionarlo? Gracias por adelantado.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#2
|
||||
|
||||
cesarsoftware,
Cita:
Revisa este código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, representa la secuencia (C, é, s, a, r) en valores ordinales (67, 233, 115, 97, 114) y la secuencia (C,Ù,s,a,r) en valores ordinales (67, 218, 115, 97, 114) según lo esperado, Pregunto: ¿Las secuencias de carácteres del código anterior se representan correctamente en sus valores ordinales en tu sistema?. Revisa este link: Cita:
Nelson. Última edición por nlsgarcia fecha: 20-09-2013 a las 23:03:38. |
#3
|
||||
|
||||
Gracias Nelson por contestar, luego comprobaré el código que planteas, pero creo que por lo que dices en nuestra máquina/windows es asi, pero no en el resto.
Es decir, cuando un telnet remoto conecta con mi aplicación, recibe ese ascii 233 en vez del 130 que el espera, no se mi explico bien, en la tabla ascii standar (la de toda la vida) para la E acentuada el carácter es 130 no 233, ¿Como puedo hacer que use la tabla "normal" Como por ejemplo esta tabla http://www.elcodigoascii.com.ar/
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#4
|
||||
|
||||
Cita:
"There are several different variations of the 8-bit ASCII table. The table below is according to ISO 8859-1, also called ISO Latin-1. Codes 129-159 contain the Microsoft® Windows Latin-1 extended characters." ¿Como sabemos que tabla usar?
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#5
|
||||
|
||||
cesarsoftware,
Cita:
1- ¿En que versión de Delphi esta desarrollada tu aplicación?. 2- ¿Que versión de Windows y Configuración de System Locale utiliza la máquina que envía la secuencia?. 3- ¿Que versión de Windows y Configuración de System Locale utiliza la máquina que recibe la secuencia?. Espero sea útil Nelson. |
#6
|
||||
|
||||
Creo, (y supongo que es evidente) que el problema se da por la transformación de un texto desde UTF8 a ASCII... estas transportando, cargando un texto que VES en ASCII pero que te ha sido entregado en otro formato... tu lo recibes en ASCII y lo tratas como ASCII... y todo tu codigo está pensado en ASCII...
A mi me sucedia algo parecido, al crear un documento de TEXTO en Notepad++... Cuando lo leia en Delphi con un TStringList me mostraba éstos carateres extraños...
lo que sucedía era que el archivo se estaba guardando en UTF8.. para esto Delphi da una solución
Y listo..!! A pesar que las variables String aceptan por defecto (ahora) carcateres unicode, el TStringList le estaba enviando algo que creia era ASCII... saludo, |
#7
|
||||
|
||||
Cita:
Por cierto, uso asnsistring porque cada caracter es de 8 bit, si uso string cada carácter es de 16 bit, que ya me las he tenido que ver con Delphi 2010 por este tema.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#8
|
||||
|
||||
Cita:
2. Windows 7 64 (España, Internacional) 3. Ni idea, puede ser cualquiera, incluso linux, el cliente remoto es eso, un cliente remoto, yo creo un servidor TCP y a mi aplicación se le hacen consultas, por ejemplo (Lista de usuarios, Nombres de máquinas, estado de máquina tal o cual, etc) por eso, la mayoria (o todos) esperan una secuencia ASCII
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. Última edición por cesarsoftware fecha: 24-09-2013 a las 11:15:46. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
insert ansistring? | noelr | Conexión con bases de datos | 0 | 23-11-2011 02:00:59 |
Uso de AnsiString | 11_8_88 | C++ Builder | 8 | 14-08-2010 20:53:47 |
Generar un string con codigos ascii | JordiP | Varios | 9 | 16-12-2009 11:39:16 |
string o AnsiString? | javier20 | OOP | 1 | 19-08-2007 01:58:35 |
AnsiString en una Dll | Trigger | API de Windows | 2 | 21-01-2004 22:53:20 |
|