7

I'm having a problem with Spanish characters in a classic asp site. A user is able to submit their name/address in a form on an aspx page. The aspx page then does an ajax post to a classic asp page which all it does is stored in our Sql 2008 DB. I can see in the database that the character is not stored correctly. For example the first name looks like Mª where it should be .

When I then read that data and display it in a text box it is still displaying Mª.

things I've tried:

  • <%@ Language=VBScript codepage=65001 %> <% Response.Charset="UTF-8" %>
  • encoding file as UTF-8 (using notepad++)

any other ideas? Do I need to go back into the database and fix the characters first or can this be done when I read the characters and display them?

earthling
  • 5,084
  • 9
  • 46
  • 90
  • 1
    Is that code you posted in both the file that is used to receive the form POST as well as the file that contains the originating form? Are you using GET or POST as the form method? What DB engine are you using? Have you read this answer: http://stackoverflow.com/a/920405/17516 ? – AnthonyWJones Aug 23 '12 at 08:10
  • the form is on an aspx page and it does an ajax post to a classic asp page that saves the data in the DB. I've checked and this asp page has no encoding information in it. – earthling Aug 23 '12 at 16:11
  • I was able to use the code snipit in the post you provided and it appears to be converting the characters correctly for display. – earthling Aug 23 '12 at 16:22
  • k so you can fix the corruption that is in the DB but you also need to find the source of the corruption and fix that. The place to start with that is to read each of the questions I posed above and carefully answer each one individually. – AnthonyWJones Aug 23 '12 at 21:38
  • http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx – Mitch Wheat Nov 03 '12 at 04:00

2 Answers2

12

I had same problem when started using utf-8 on ASP, found that session.CodePage makes the difference. In classic ASP pages do always this first ASP declarations to ensure all page uses UTF-8 for data, forms, asp code, data received or sent.

<%@Language=VBScript CodePage = 65001%>
<%
Session.CodePage = 65001
Response.charset ="utf-8"
Session.LCID     = 1033 'en-US
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
user2033838
  • 153
  • 1
  • 10
  • thanks, that's exactly whet I ended up adding to resolve it, along with needing to clean up the data that was inserted incorrectly. – earthling Mar 13 '13 at 21:05
  • Wouldn't it make more sense to just add the session stuff once in `Session_OnStart()`? – Bond Jul 02 '15 at 22:12
3

What you are looking at is UTF-8. It's probably exactly as it should be, and the problem is that the tool you use for the looking is not handling the UTF-8 correctly, either because it cannot, or because it is not configured correctly.

tripleee
  • 175,061
  • 34
  • 275
  • 318
  • 1
    the "tool" is an asp page in Firefox, IE or chrome. – earthling Aug 23 '12 at 15:52
  • So does the page get interpreted as UTF-8 by the browser? – tripleee Aug 23 '12 at 16:05
  • How do I check, and how do I enforce that for other users? I've set the codepage and response charset already. – earthling Aug 23 '12 at 16:23
  • At least in Firefox, it will tell you in the Page Properties or similar. Examine the Content-Type: header of the HTTP response; and if you don't have a suitable http-equiv meta tag in your HTML, add one. – tripleee Aug 23 '12 at 16:26
  • Well, the tool in this case is a Classic ASP page,,, so should have encoding declarations if data is in UTF-8: Session.CodePage = 65001 Response.charset ="utf-8" Different thing is if the data is encoded in another encoding like Win-1252, then the declarations must be accordingly to that encoding. – user2033838 Nov 21 '20 at 04:04