|
Тема |
utf8encode и utf8decode |
|
Автор | longy (Нерегистриран) | |
Публикувано | 01.08.07 16:55 |
|
|
Пиша в delphi клуба, защото тук съм получавал добри отговори на много въпроси.
този специално е повече свързан с .НЕТ - по-точно с невъзможността ми да получа същата функционалност както при delphi :(
с delphi програмката всичко си е ок, но с .нет не се получава и това си е.
От време на време се връщам към този проблем.
междувременно се намират по-важни неща, но това продължава да ме тормози и просто не вярвам, че единствения начин е да си напиша собствена имплементация.
Опитвам се със стандартните възможности на .NET да постигна това, което в delphi се прави със стандартните функции utf8Encode() и utf8Decode(), които съответно получават widestring (т.е. unicode string в delphi) и го енкодват в utf8 и обратно - от utf8-енкоднат стринг връщат widestring.
Написах си 2 helper функции със същите имена:
=======================================
using System;
using System.Text;
namespace helpers
{
/// <summary>
/// Description of helper.
/// </summary>
public class Text
{
public static string utf8Encode(string ws) {
byte[] encoded = Encoding.UTF8.GetBytes(ws);
return Encoding.Default.GetString(encoded);
}
public static string utf8Decode(string s) {
byte[] decoded = Encoding.Unicode.GetBytes(s);
return Encoding.Unicode.GetString(decoded);
}
}
}
========================================
Правя следния опит:
1) имам следния текст: "тест test" (т.е. тест на кирилица, после <интервал>, после test на латиница)
2) целта е като направя utf8Encode и после utf8Decode да получа пак същия текст.
Delphi:
---unicode data:---
тест test
codes:
[242][229][241][242][32][116][101][115][116]
извиквам utf8Encode(unicode data):
получавам:
---utf8 data:---
тест test
codes:
[209][130][208][181][209][129][209][130][32][116][101][115][116]
извиквам utf8Decode(utf8 data):
получавам:
---unicode data:---
тест test
codes:
[242][229][241][242][32][116][101][115][116]
C#.NET:
---unicode data:---
тест test
codes:
[242][229][241][242][32][116][101][115][116]
извиквам Text.utf8Encode(unicode data):
получавам:
---utf8 data:---
тест test
codes:
[209][130][208][181][209][129][209][130][32][116][101][115][116]
дотук супер :))
обаче...
извиквам Text.utf8Decode(utf8 data):
получавам:
---unicode data:---
тест test
codes:
[209][130][208][181][209][129][209][130][32][116][101][115][116]
т.е. никакъв ефект
какво ли не пробвах - всички възможни Encoding.
излиза какво ли не, само не и първоначалния текст.
Някой може ли да помогне или да правя хамалогии като се опитам сам да си напиша decode-ването ?
Благодаря предварително
|
| |
|
|
|