Solved

Getting non-ascii chars in URLs passed correctly.  Getting 404s due to "ascii-ifying" URLs

Posted on 2007-11-23
8
312 Views
Last Modified: 2012-08-13
I have some files on my web server with non-ascii (in fact, non-Latin) chars in their filenames.
For example:
ről.txt

That is, letter r, then letter o with double acute accent, letter L, and the extension.  The double acute accent is detailed here:
http://en.wikipedia.org/wiki/Double_acute_accent

It looks like this site is also unablwe to show the character correctly.  Tsk tsk.

When I make a request for the page, I always get a 404.  Looking in the logd I see that the server is seeking rol.txt, and of course not finding it.
THis is true using
http://server/ről.txt
or
http://servcer/r%c5%91l.txt

In the IIS logs I see:
21:45:38 127.0.0.1 127.0.0.1 GET /rol.txt - 404 3535 819 40  ...

My Web.sitemap contains the correct URL with the accented character.

It appears that the browser is making the correct request, but that the server is not seeing the right chars, URL-encoded or not.
Please advise how to make this work.
0
Comment
Question by:dc197
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
8 Comments
 
LVL 19

Expert Comment

by:SteveH_UK
ID: 20342017
URLs should be encoded before passing.  At the moment, not all systems support internationalised URL encoding as described here http://www.w3.org/International/O-URL-code.html

Your best bet is to sanitise filenames before they are stored on your server.

Otherwise, you may find that the international encoding described above will help.
0
 
LVL 19

Expert Comment

by:SteveH_UK
ID: 20342019
Note that many URL encoding schemes encode URLs according to the non-internationalised standard, i.e. they only support 7-bit ASCII, or if you are lucky 8-bit.  Neither of these support Unicode directly.
0
 
LVL 5

Author Comment

by:dc197
ID: 20342954
I developed the site using VS2005 and its internal webserver.  This fully supports unicode chars, and the site works just fine, whether one uses URL-encoded requests or not.

I copied the source over to my dev machine for testing, which is running IIS5 as the webserver.  This is where the problem arose.   Is IIS5 the culprit?  Is IIS6 better?
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 19

Accepted Solution

by:
SteveH_UK earned 200 total points
ID: 20343101
See http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/23ec8be2-649a-47b7-8d75-ffd937f16fe8.mspx?mfr=true

Yes, new in IIS 6

The paragraph at the bottom of the above page reads:

Because IIS 6.0 now supports UTF-8 URLs, you can now log those URL requests to an ASCII log file. UTF-8 is a double-byte character set standard. Because ASCII is a single-byte character set standard, logging UTF-8 information to an ASCII file presents a problem. In such a case, ? is logged for the characters that cannot be converted to the codepage of the server.
0
 
LVL 5

Author Comment

by:dc197
ID: 20343697
OK it looks like IIS6 has support for unicode URLs (http://msdn.microsoft.com/msdnmag/issues/02/03/IIS6/) as well as better logging. That's good, because the site I wish to host heavily features the Hungarian language, in which o is not the same as ó, ö or ő.

Cheers.
0
 
LVL 5

Author Comment

by:dc197
ID: 20343712
It would appear that this site's ability to handle non-standard chars sucks, too.
0
 
LVL 19

Expert Comment

by:SteveH_UK
ID: 20345079
Actually, they have recently opened an Experts Exchange bug on this issue, and I have been assisting!

It's a fairly standard issue.  For example the PHP language doesn't support Unicode particularly well, and it certainly can make coding harder.

Nevertheless, in my view that is no excuse and I always make sure any forms I code support Unicode fully and do not assume Latin character sets unless appropriate!
0
 
LVL 19

Expert Comment

by:SteveH_UK
ID: 20345080
So, if you are coding for Hungarian, I recommend that you encode your pages in UTF-8, that you use HTML entities for posting/returning form values, that you always set the HTTP headers (not just those in the HTML page!) and that you TEST, TEST, TEST!

Good luck :)
0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

One of the pain points with developing AJAX, JavaScript, JQuery, and other client-side behaviors is that JavaScript doesn’t allow for cross domain request for pulling content. For example, JavaScript code on www.johnchapman.name could not pull conte…
IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
NetCrunch network monitor is a highly extensive platform for network monitoring and alert generation. In this video you'll see a live demo of NetCrunch with most notable features explained in a walk-through manner. You'll also get to know the philos…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…

617 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question