Page 1 of 1

Svenska tecken i DeviceName

Posted: Thu Jan 18, 2018 11:08 am
by EJE64
Hej!
Jag har precis börjat utveckla lite runt TellStick (Duo) och det fungerar generellt bra, men har ett problem med om enheterna har svenska bokstäver i namnet. Hur gör jag för att få dem att visas på lösligt sätt?
Har jag en device som ex heter "Gästrum" så få jag tillbaka en sträng som ser ut så här " Gästrum"
...
int DeviceId = TelldusAPI.tdGetDeviceId(i);
string DeviceName = TelldusAPI.tdGetNameString(DeviceId);

....
[DllImport("TelldusCore.dll")]
private static extern IntPtr tdGetName(int intDeviceId);

public static string tdGetNameString(int intDeviceId)
{
return Marshal.PtrToStringAnsi(tdGetName(intDeviceId));
}

Tror säkert att det är ett enkelt svar och att jag borde förstå, men är tacksam för hjälp!
/Jörgen

Re: Svenska tecken i DeviceName

Posted: Thu Jan 18, 2018 11:08 am
by krambriw
unicode, utf-8, u''....

Hur det skall hanteras i C# vet jag inte (det är väl C# du kör?) men det är i alla fall lösningen. I Python löste jag det med

Code: Select all

name.decode('utf-8')
mvh

Re: Svenska tecken i DeviceName

Posted: Thu Jan 18, 2018 11:08 am
by EJE64
Tack för svaret :-)

För de som eventuellt läser denna tråd framöver, så kan jag komplettera med att i C# så gör men det med följande kodrad:
Encoding.UTF8.GetString(...);

Re: Svenska tecken i DeviceName

Posted: Thu Jan 18, 2018 11:08 am
by Tasle
Det er rett, konvertere fra UTF-8 til Ansi-string. Og i Delphi:

Code: Select all

Navn:= Utf8ToAnsi (Name);