xsharp.eu • Ansi2Utf8
Page 1 of 1

Ansi2Utf8

Posted: Thu Oct 05, 2023 8:38 am
by Horst
Hallo

Ich setze einen String zusammen und muss ihn an eine API im Jason Format senden. Nun gibts Probleme mit den Zeichen.
Ein René wird zu René, was die API nicht schluckt.
Wie convertiert man so einen String nach UTF8 ?
Ich bräuchte ein Ansi2UTF8 :-)

Gruss Horst

Re: Ansi2Utf8

Posted: Thu Oct 05, 2023 9:38 am
by wriedmann
Hallo Horst,
in X# sind alle Strings Unicode.
Am besten kodierst Du die Umlaute mit HTML-Notation.
Wolfgang

Re: Ansi2Utf8

Posted: Thu Oct 05, 2023 10:42 am
by robert
Horst
VO or X#
In Vo you could do ConvertFromCodePageToCodePage(cString, CP_ACP, CP_UTF8)
In X# all strings are unicode already

Robert

Re: Ansi2Utf8

Posted: Thu Oct 05, 2023 1:39 pm
by Horst
Dann mache ich etwas falsch bei

Code: Select all

aData := Encoding.UTF8:GetBytes( cData )
??
Dann müsste es - > Encoding.GetBytes( cData ) sein ?

Der Code:

Code: Select all

CASE nCase = 2 .or. nCase = 3	  // Post
		// Einen Kontakt zu Bexio hinzufügen
		oRequest 				:= ( System.Net.HttpWebRequest ) System.Net.HttpWebRequest.Create(cUrl)
		oRequest:ContentType			:= "application/json"
		oRequest:Accept 			:= "application/json"
		oRequest:Headers["Authorization"] 	:= "Bearer "+cToken
		oRequest:@@Method			:= "POST"                                           

		aData			:= Encoding.UTF8:GetBytes( cData )
		nDataLen		:= aData:Length
		oRequest:ContentLength	:= nDataLen

		oStream			:= oRequest:GetRequestStream()
		oStream:Write		( aData, 0, nDataLen )
		oStream:Close		()
	
		oResponse		:= ( System.Net.HttpWebResponse ) oRequest:GetResponse()
		aResult			:= SELF:GetBytesForBexio( oResponse:GetResponseStream() )
		cReturn			:= System.Text.Encoding.UTF8:GetString( aResult )

Re: Ansi2Utf8

Posted: Fri Oct 06, 2023 3:53 am
by wriedmann
Hallo Horst,
in X# sind wie bereits gesagt alle Strings bereits Unicode. Aufzupassen ist nur bei der Konvertierung in ein Byte-Array.
Ich würde mal das hier probieren.

Code: Select all

aData := System.Text.Encoding.Default:GetBytes( cData )
Wolfgang