2010-01-20 5 views
1

문자열이 내 데이터베이스에 저장되는 방식에 이상한 문제가있어 결과적으로 이러한 "끝나지 않은 문자열 리터럴"오류가 Javascript에서 발생합니다.문자열 인코딩 문제

플랫폼 : C가/ASP.NET MVC 1.0, SQL 서버 2005, SparkViewEngine, YUI 2 내보기에서

가, 내가 JSON으로 객체를 직렬화 # 여기

는 내가 무엇을하고 있는가에 대한 개요입니다 NewtonSoft의 Json.NET을 사용한 데이터 구조.

<script type="text/javascript"> 
    // <![CDATA[ 
    var data = YAHOO.lang.JSON.parse("${Newtonsoft.Json.JsonConvert.Serialize(Model)}"); 
    .... 
</script> 

일반적으로,이 작동하지만, 나는 데이터베이스에서 끌어 필드 중 하나가 제대로 형성하지 않는 문자열을 일으키는 원인이되는 다음과 같은 데이터를 포함 것으로 나타났습니다.

데이터베이스 필드는 NVARCHAR (2000)입니다.

일부 항목의 경우 데이터베이스에서 메모장으로 복사하여 붙여 넣을 때 문자열에 이상한 문자가 표시됩니다.

컴파일? 분석? &? 권장 사항? 라인의 무리 나누기로 데크 방화범

, 그것은 보여줍니다

분석 & 권고 갑판 ","STARTDATE ":"1/19/10 ","FinishDate ":"1/26/10 ","시간 "6.0"

컴파일 분석 & 권고 데크

가 사용자에게 이야기 한 후, 나는 그들이 일을 사용하고 있다는 것을 발견 UPDATE 전자 문서에서 HTML 양식으로 복사하여 붙여 넣기.

양식 자체는 YUI 연결 관리자를 사용하여 양식 값을 저장하기 위해 비동기 POST 호출 (AJAX)을 수행합니다. 데이터베이스는 양식 필드 값과 연관된 모든 인코딩과 함께 양식 필드 값을 저장했습니다.

Word에는 인쇄 할 수 있지만 ASCII는 아닌 문자가있는 것처럼 보입니다. 이것을 감지하고 올바르게 인코딩 할 수있는 방법이 있습니까?

답변

2

이것은 인용 문자를 제대로 처리하지 않는 경우 인 것으로 보입니다. 여러 가지 방법이 있습니다. 우리 웹 사이트의 주석에 사용하는 방법은 모든 인용 부호가 단일 및 이중으로 인코딩되어 있는지 확인하여 SQL, ASPX & Javascript가 제대로 작동하지 않도록하는 것입니다. 우리의 방법은 고객 의견 필드를위한 것입니다. 그래서 우리는 전환에 대해 배외합니다.

Function SafeComment(ByVal strInput) 
' Renders Any Comment Codes Harmless And Leaves Them HTML readable In An eMail Or Web Page 
' Try: SafeComment("`[email protected]#$%^&*()_+=-{}][|\'"";:<>?/.,") 
    SafeComment = "" 
    If Len(strInput) = 0 Then Exit Function 
    SafeComment = Replace(Replace(Replace(_ 
        Replace(Replace(Replace(_ 
        Replace(Replace(Replace(_ 
        Replace(Replace(Replace(_ 
         Server.HtmlEncode(Trim(strInput)), _ 
        "-", "&#45;"), ":", "&#58;"), "|", "&#124;"), _ 
        "`", "&#96;"), "(", "&#40;"), ")", "&#41;"), _ 
        "%", "&#37;"), "^", "&#94;"), """", "&#34;"), _ 
        "/", "&#47;"), "*", "&#42;"), "'", "&#39;") 
End Function 

꽤 좋지는 않지만 일을합니다.

+0

감사합니다. 문제는 사용자 복사로 인쇄 가능한 ASCII 문자가 아닌 문자를 붙여 넣은 것입니다. – Abe

+0

이 경우 우리는 유니 코드 문자를 Ascii로 취한 다음 결과 8 비트 문자를 적절한 7 비트 인쇄 가능 ASCII 문자에 매핑했습니다. – Dave

+0

더 정확히 말하면 사용자는 단어 문서의 텍스트를 양식으로 복사했습니다.붙여 넣기가 된 문자가 무엇인지 모르겠지만 문자열이 올바르게 종료되지 않습니다. 그런 경우에 대해 언급 한 솔루션입니까? 다시 한 번 감사드립니다! – Abe