VS2005에서 일반 HTTP 처리기를 개발하고 디버그 모드로 테스트하고 있습니다. 쿼리 문자열에 상위 비트 문자가 포함 된 경우를 제외하고는 잘 작동합니다. 라틴 소문자 가시/u00FE " 및 라틴 소문자 Ae/u00E6 æ.VS2005 UTF-8 일반 HTTP 처리기 : 쿼리 문자열의 특정 문자 문제 (예 : þ æ)
내 컴퓨터의 IE8이 UTF-8 URL을 보내도록 설정되어 있습니다. 내가 코드를 디버깅 할 때 Internet Explorer 8의 주소 표시 줄에 다음을 입력하고 :
http://app/myHandler.ashx?term=foo // everything works http://app/myHandler.ashx?term=þorn // does not work -- query from database fails
데이터베이스 SQLite는이며 UTF-8 인코딩을 사용하고 그것을 잘 작동합니다. 이러한 특수 문자를 사용하는 쿼리는 다른 GUI 도구를 사용하거나 Visual Studio에 System.Data.SQLite GUI 추가 기능을 사용하여 SQLite에 대해 직접 실행될 때 제대로 작동합니다.
쿼리 문자열의 값을 올바르게 디코딩합니까? GetString()은 바이트를 디코딩하지 않습니까? HTTP 처리기에서
public StandardRequest(HttpContext context) { UTF8Encoding utf8 = new UTF8Encoding(); if (context.Request.QueryString["term"] != null) { byte[] w = utf8.GetBytes(context.Request.QueryString["term"]); word = utf8.GetString(w); ...
는 ContentEncoding는 UTF-8로 설정됩니다
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
디버거의의 로컬 창에서
는 Request.ContentEncoding는 UTF-8입니다.하지만 지역 창에서 쿼리 문자열 값, 쿼리 문자열 '가시'에서 용어 값 으로 표시되고 '[] ORN'을 검사하고 그가에 표시되는 방법을 때 내가 데이터베이스로 보내는 SQL 문. 마치 캐릭터가 인식되지 않은 것입니다.
값을 쿼리 문자열에서 가져 와서 문자열로 변환하는 방식에 문제가 있습니까?