Thursday, March 22, 2012

Server.HTMLDecode doesnt decode char 345

Hello!

I have a problem decoding the czech character:
r

The HTML code for this character is ř but when running
Server.HTMLdecode on that string it just returns ř instead of the real
char. (It works on a lot of other characters)
I need to decode this string in order to render an image with this character
as a part of a headline.

Can anyone help me with this issue, or is it maybe a bug?

/kindest regards, JonasThis works fine for me:
Response.Write(Server.HtmlDecode("ř"));

My web.config specifies:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" /
maybe yours is using something else?

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)

"Jonas kermark" <jonas@.wipcore.se> wrote in message
news:uY3DJazlFHA.2080@.TK2MSFTNGP14.phx.gbl...
> Hello!
> I have a problem decoding the czech character:
> r
> The HTML code for this character is ř but when running
> Server.HTMLdecode on that string it just returns ř instead of the
> real char. (It works on a lot of other characters)
> I need to decode this string in order to render an image with this
> character as a part of a headline.
> Can anyone help me with this issue, or is it maybe a bug?
> /kindest regards, Jonas
Maybe it is because I'm usning the Server object in a function in a non web
environment - a regular class:

string decodedText = System.Web.HttpContext.Current.Server.HtmlDecode(
text );

where the text property sometimes contains the char ř

Is there some way that I can tell the HtmlDecode which encoding to use?

/Jonas

"Karl Seguin" <karl REMOVE @. REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:%23o0ElR1lFHA.3552@.TK2MSFTNGP10.phx.gbl...
> This works fine for me:
> Response.Write(Server.HtmlDecode("ř"));
> My web.config specifies:
> <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
> maybe yours is using something else?
> Karl
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/ - New and Improved (yes, the popup is annoying)
> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
> come!)
>
> "Jonas kermark" <jonas@.wipcore.se> wrote in message
> news:uY3DJazlFHA.2080@.TK2MSFTNGP14.phx.gbl...
>> Hello!
>>
>> I have a problem decoding the czech character:
>> r
>>
>> The HTML code for this character is ř but when running
>> Server.HTMLdecode on that string it just returns ř instead of the
>> real char. (It works on a lot of other characters)
>> I need to decode this string in order to render an image with this
>> character as a part of a headline.
>>
>> Can anyone help me with this issue, or is it maybe a bug?
>>
>> /kindest regards, Jonas
>>
i don't think that's your problem (although within a class, there's no
reason not to use System.Web.HttpUtility.HtmlDecode which decouples your
class from the context (ie, it can be reused outside of the web)).

All HtmlDecode does in the case of a numeric value (such as 345), is:

char c1 = (char) ((ushort) int.Parse("345"));
Response.Write(c1);

Is your page encoding set to utf-8? (if you put tracing on, at the top of
the trace information it says the encoding).l

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is
annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)
"Jonas kermark" <jonas@.wipcore.se> wrote in message
news:OELxjb1lFHA.2904@.TK2MSFTNGP14.phx.gbl...
> Maybe it is because I'm usning the Server object in a function in a non
> web environment - a regular class:
> string decodedText = System.Web.HttpContext.Current.Server.HtmlDecode(
> text );
> where the text property sometimes contains the char ř
> Is there some way that I can tell the HtmlDecode which encoding to use?
> /Jonas
> "Karl Seguin" <karl REMOVE @. REMOVE openmymind REMOVEMETOO . ANDME net>
> wrote in message news:%23o0ElR1lFHA.3552@.TK2MSFTNGP10.phx.gbl...
>> This works fine for me:
>> Response.Write(Server.HtmlDecode("ř"));
>>
>> My web.config specifies:
>> <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
>>
>> maybe yours is using something else?
>>
>> Karl
>>
>> --
>> MY ASP.Net tutorials
>> http://www.openmymind.net/ - New and Improved (yes, the popup is
>> annoying)
>> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
>> come!)
>>
>>
>> "Jonas kermark" <jonas@.wipcore.se> wrote in message
>> news:uY3DJazlFHA.2080@.TK2MSFTNGP14.phx.gbl...
>>> Hello!
>>>
>>> I have a problem decoding the czech character:
>>> r
>>>
>>> The HTML code for this character is ř but when running
>>> Server.HTMLdecode on that string it just returns ř instead of the
>>> real char. (It works on a lot of other characters)
>>> I need to decode this string in order to render an image with this
>>> character as a part of a headline.
>>>
>>> Can anyone help me with this issue, or is it maybe a bug?
>>>
>>> /kindest regards, Jonas
>>>
>>
>>
Yes the encoding is set ut utf-8

the strange thing is that the decodedText property still contains the
"ř" string after HtmlDecode

Nevermind, thanks for your explanation of the HtmlDecode, I have now created
a SpecialDecode function instead that works fine

private static string SpecialDecode(string decodedText)
{
string tmpResult = decodedText;
bool found = true;
try
{
while(found)
{
if( tmpResult.IndexOf("&#") > -1 )
{
string chars = tmpResult.Substring( tmpResult.IndexOf("&#")+2, 3);
//decode
char c1 = (char) ((ushort) int.Parse(chars));
tmpResult = tmpResult.Replace("&#" + chars + ";", c1.ToString());
}
else
{
found = false;
}
}
}
catch{}

return tmpResult;
}

"Karl Seguin" <karl REMOVE @. REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:e2uGEB2lFHA.3936@.TK2MSFTNGP10.phx.gbl...
>i don't think that's your problem (although within a class, there's no
>reason not to use System.Web.HttpUtility.HtmlDecode which decouples your
>class from the context (ie, it can be reused outside of the web)).
> All HtmlDecode does in the case of a numeric value (such as 345), is:
> char c1 = (char) ((ushort) int.Parse("345"));
> Response.Write(c1);
> Is your page encoding set to utf-8? (if you put tracing on, at the top of
> the trace information it says the encoding).l
> Karl
>
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/ - New and Improved (yes, the popup is
> annoying)
> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
> come!)
> "Jonas kermark" <jonas@.wipcore.se> wrote in message
> news:OELxjb1lFHA.2904@.TK2MSFTNGP14.phx.gbl...
>> Maybe it is because I'm usning the Server object in a function in a non
>> web environment - a regular class:
>>
>> string decodedText = System.Web.HttpContext.Current.Server.HtmlDecode(
>> text );
>>
>> where the text property sometimes contains the char ř
>>
>> Is there some way that I can tell the HtmlDecode which encoding to use?
>>
>> /Jonas
>>
>> "Karl Seguin" <karl REMOVE @. REMOVE openmymind REMOVEMETOO . ANDME net>
>> wrote in message news:%23o0ElR1lFHA.3552@.TK2MSFTNGP10.phx.gbl...
>>> This works fine for me:
>>> Response.Write(Server.HtmlDecode("ř"));
>>>
>>> My web.config specifies:
>>> <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
>>>
>>> maybe yours is using something else?
>>>
>>> Karl
>>>
>>> --
>>> MY ASP.Net tutorials
>>> http://www.openmymind.net/ - New and Improved (yes, the popup is
>>> annoying)
>>> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
>>> come!)
>>>
>>>
>>> "Jonas kermark" <jonas@.wipcore.se> wrote in message
>>> news:uY3DJazlFHA.2080@.TK2MSFTNGP14.phx.gbl...
>>>> Hello!
>>>>
>>>> I have a problem decoding the czech character:
>>>> r
>>>>
>>>> The HTML code for this character is ř but when running
>>>> Server.HTMLdecode on that string it just returns ř instead of the
>>>> real char. (It works on a lot of other characters)
>>>> I need to decode this string in order to render an image with this
>>>> character as a part of a headline.
>>>>
>>>> Can anyone help me with this issue, or is it maybe a bug?
>>>>
>>>> /kindest regards, Jonas
>>>>
>>>
>>>
>>
>>
Karl Seguin wrote:

> This works fine for me:
> Response.Write(Server.HtmlDecode("ř"));
> My web.config specifies:
> <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
> maybe yours is using something else?
> Karl

Numeric references are based on Unicode code points, thus
requestEncoding and responseEncoding don't apply.

Cheers,
--
http://www.joergjooss.de
mailto:news-reply@.joergjooss.de

0 comments:

Post a Comment