Ansi2Utf8

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
User avatar
Horst
Posts: 327
Joined: Tue Oct 13, 2015 3:27 pm

Ansi2Utf8

Post 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
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Re: Ansi2Utf8

Post by wriedmann »

Hallo Horst,
in X# sind alle Strings Unicode.
Am besten kodierst Du die Umlaute mit HTML-Notation.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
robert
Posts: 4225
Joined: Fri Aug 21, 2015 10:57 am
Location: Netherlands

Re: Ansi2Utf8

Post 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
XSharp Development Team
The Netherlands
robert@xsharp.eu
User avatar
Horst
Posts: 327
Joined: Tue Oct 13, 2015 3:27 pm

Re: Ansi2Utf8

Post 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 )
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Re: Ansi2Utf8

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Post Reply