1

I am new to charsets and encoding. I don't know what I am doing wrong but the page just spits out weird codes when I want it output 你好. This is my code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.CodePage = 65001
Response.CharSet = "UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<%response.write ("你好")%>
</body>
</html>

All I can see on the screen is: ä½ å¥½ The file is saved in UTF-8 encoding as well.

Thanks in advance!

user1048389
  • 11
  • 1
  • 1
  • 4

4 Answers4

2

If it helps someone. ASP declaractions always before any HTML. Incudes define session, that way never fails to encode utf-8

<%@CodePage = 65001%>
<%
Session.CodePage = 65001
Response.charset ="utf-8"
Session.LCID     = 1033 'en-US
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<%response.write ("你好")%>
</body>
</html>
user2033838
  • 153
  • 1
  • 10
1

Move your DOCTYPE declaration after the code block that sets the codepage. The codepage setting needs to happen before any output.

webaware
  • 2,795
  • 2
  • 30
  • 37
1

Most likely your asp file is just UTF-8 encoded (without bom).
If it is, need to save file with BOM.
In Notepad++, Encoding > Convert to UTF-8
In Notepad, specify Encoding as UTF-8 on save dialog.

In fact, BOM for UTF-8 files is not recommended.
The point is In ASP, Response stream requires BOM implicitly.
As an experiment, try to run following page (encoded as utf-8 without bom), you'll see Response object flushes weird characters instead of the letter. However direct input will be smooth as it should be.

<%
Response.Codepage = 65001
Response.Charset = "utf-8"
Response.Write "I'm weird: 好"
%><br />I'm not weird: 好
Community
  • 1
  • 1
Kul-Tigin
  • 16,728
  • 1
  • 35
  • 64
0

You don't have to save the .asp as UTF-8 at the server side! Just save it normally (UCS-2).

Sander_P
  • 1,787
  • 1
  • 13
  • 37