cesarsoftware,
Cita:
|
Empezado por cesarsoftware
...creo un servidor TCP y a mi aplicación se le hacen consultas...
...vete tu a saber que SO lleva...puede ser cualquiera, incluso linux...sino es un SO propietario...el cliente remoto es eso, un cliente remoto...lo que si se es que lo normal es que esperen caracteres ASCII...
...si la cadena ya se ha generado en UTF8 no voy a poder convertirla nunca...
|
Te comento:
1- Sería conveniente saber cuales son
las características del cliente remoto que presenta el problema mencionado en el
Msg #1,
quizás con mayor información podamos acotar el problema de forma más precisa.
2- ¿Has probado el
tipo de dato UTF8String y la
función de conversión Utf8ToAnsi?, la idea es manejar los datos a enviar en el Servidor como
UTF8String y convertirlos a ASCII por medio de
Utf8ToAnsi al momento del envío.
Revisa esta información:
Cita:
|
Empezado por Delphi Object and Component Reference
UTF8String represents a string in the UTF-8 character set, UTF8String is the type for strings encoded using UTF-8. UTF-8 is an efficient encoding of Unicode character-strings that recognizes the fact that the majority of text-based communications are in ASCII, and optimizes the encoding of these characters.
|
3-
Quizás el problema esta relacionado al CodePage del Sistema Receptor, la tabla ASCII varía según el mismo, por ejemplo el
CodePage 437 se corresponde con la siguiente tabla:
El codigo ASCII, la cual se adapta a lo esperado por el Servidor según lo comentado en el
Msg #1, pregunto: ¿
Y si el CodePage fuera otro cualquiera?, revisa este link :
Code Page Identifiers
4- Revisa este código:
Código Delphi
[-]
function ChangeCodePage(const InputStr: AnsiString; CodePage : Integer): AnsiString;
var
AuxStr: WideString;
begin
AuxStr := WideString(InputStr);
SetLength(Result, WideCharToMultiByte(CodePage, 0, PWideChar(InputStr),
Length(InputStr), nil, 0, nil, nil));
WideCharToMultiByte(CodePage, 0, PWideChar(AuxStr), Length(AuxStr),
PAnsiChar(Result), Length(Result), nil, nil);
end;
El código anterior
convierte un String a un AnsiString con un CodePage específico, quizás puedas probar enviando los datos como
CodePage 437.
Revisa este link:
Pregunto:
1- ¿El problema se presenta
con más de un cliente remoto?.
2- ¿Hay clientes remotos con los que
funciona bien la transferencia?.
3- ¿Has considerado
normalizar todos los datos eliminado los caracteres acentuados por sus correspondientes sin acento?.
Espero sea útil
Nelson.