2009-11-11 4 views
3

이것은 내가 자주 건너 오는 문제입니다. 나는 항상 끔찍한 오두막집을 쓰는 것을 끝내지 만, 거기에 확신이있다. 으로 처리해야한다. 어쨌든 영국 파운드 기호로 작업하는 것은 드문 일이 아니다.영국 파운드 기호는 어떻게 저장하고 검색해야합니까?

문제 : 사용자가 CMS의 텍스트 필드에 영국 파운드 기호 (£)를 입력합니다. 그들은 '저장'을 클릭하고 양식 필드 값은 JavaScript escape() 함수를 사용하여 이스케이프 처리되고 jQuery AJAX POST 요청과 함께 제출됩니다. 그러나 어떤 시점에서 파운드 기호가 물음표 (잘못된 문자 인코딩?)가됩니다.

데이터베이스에 저장하기 전에 기호를 HTML 엔터티로 변환 할 수 없습니다. 웹 사이트의 프런트 엔드에 표시하기 위해 값을 검색 할 때 HTML로 인코딩되므로 엔티티가)입니다.

나를 위해이 문제를 해결하려면 무엇을 해야합니까? 여기에서하고 있습니까?

답변

4

escape 기능을 사용할 필요가 없습니다.

<system.web> 
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 
</system.web> 

그리고 HTML 페이지도 :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
+0

대단히 고마워요. jQuery가 내장 된 것을 알지 못했습니다. –

0

봅니다 영국 파운드를 저장

$.ajax({ 
    url: '/somepage', 
    data: { param1: $('#textfield').val() }, 
    success: function() { } 
}); 

그냥 응용 프로그램이 UTF-8 인코딩 설정되어 있는지 확인 : jQuery를 이미 인코딩 처리 기호는 & 파운드; 그래서 html 응답으로 표시되면 영국 파운드 기호가 표시됩니다.

+0

출력에서 ​​HTMLEncoded이므로 질문에 말했듯이 출력 할 수 없습니다. –

+0

이 질문에 직접 대답하지는 않지만. @himadri는 인코딩과 디코딩 재미를 피하기 위해 대안을 지적했다. 부정적인 표결은 필요 없습니다. 아마도 유용하다고 생각한 것 같습니다. £ 그냥 코드를 뽑았습니다. 아마도 인코딩되지 않은 HTML이나 일반 HTML로 Ajax를 사용하는 사람이 이것을 사용하게 될 것입니다. 나는이 젠체하는 사람을 존경한다. ... !!! –

2

양식 필드 값은() 함수

문제가있어 자바 스크립트 이스케이프를 사용하여 이스케이프. escape은 URL 매개 변수 값을 만드는 잘못된 방법이며 일반적으로 은 사용하지 말아야합니다. encodeURIComponent을 찾고 있는데 제대로 수행됩니다. escape이 엉망이되는 것 중 하나는 £와 같은 비 ASCII 문자입니다.

언급 한대로 jQuery를 사용하는 경우 수동으로 POST 데이터 문자열을 만들 필요가 없습니다. {x: '£'}과 같은 조회를 전달하면 인코딩이 처리됩니다.

응용 프로그램이 유니 코드를 올바르게 처리하도록 설정되지 않은 경우 £을 저장하고 검색하는 데 더 많은 문제가있을 수 있습니다. 이상적으로는 UTF-8로 페이지를 제공하고 Darin에서 언급 한 UTF-8 IO를 사용하고 NATIONAL 문자 (NVARCHAR)를 사용하여 SQL Server에 유니 코드 문자열을 저장해야합니다. 값이 웹 사이트의 프론트 엔드에 표시를 검색하는 경우가 HTML이

인코딩 때문에

난 그냥 여기에 기호를 변환 할 수는 데이터베이스에 저장하기 전에 HTML 엔티티입니다 좋은! 그것은 절대적으로 맞습니다. HTML로 인코딩 된 데이터를 데이터베이스에 저장하면 안됩니다. 출력 이스케이프 문제에 완전히 대처하는 것은 완전히 잘못된 방법입니다.모든 텍스트를 HTML 인코딩하여 출력하십시오.

+0

고마워요. 제가 두 가지 대답을 받아 들일 수 있다면,이 대답도 받아 들였을 것입니다. –

관련 문제