views:

401

answers:

2

Hi,

Is there a way to identify whether the browser encoding is set to/supports "UTF-8" from Javascript?

I want to send "UTF-8" or "English" letters based on browser setting transparently (i.e. without asking the User)

Edit: Sorry I was not very clear on the question. In a Browser the encoding is normally specified as Auto-Detect (or) Western (Windows/ISO-9959-1) (or) Unicode (UTF-8). If the user has set the default to Western then the characters I send are not readable. In this situation I want to inform the user to either set the encoding to "Auto Detect" (or) "UTF-8".

Thanks.

+1  A: 

First off, UTF-8 is an encoding of the Unicode character set. English is a language. I assume you mean 'ASCII' (a character set and its encoding) instead of English.

Second, ASCII and UTF-8 overlap; any ASCII character is sent as exactly the same bits when sent as UTF-8. I'm pretty sure all modern browsers support UTF-8, and those that don't will probably just treat it as latin1 or cp1252 (both of which overlap ASCII) so it'll still work.

In other words, I wouldn't worry about it.

Just make sure to properly mark your documents as UTF-8, either in the HTTP headers or the meta tags.

derobert
Actually, UTF-8 is an encoding; one of several encodings (including UTF-16 and UTF-32) that are capable of handling the entire Unicode character set. Most charset/encoding names (like ASCII and cp1252) signify both: the characters they can encode, and how they encode them.
Alan Moore
@Alan M: You are quite correct; I will fix this.
derobert
A: 

I assume the length of the output (that you read back after outputting it) can tell you what happened (or, without JavaScript, use the Accept-Charset HTTP header, and assume the UTF-8 encoding is supported when Unicode is accepted).

But you'd better worry about sending the correct UTF-8 headers et cetera, and fallback scenarios for accessibility, rather than worrying about the current browsers' UTF-8 capabilities.

Arjan

related questions