복붙노트

[SQL] 변환 UTF-8 SQL 데이터베이스에 문자열 클래식 ASP

SQL

변환 UTF-8 SQL 데이터베이스에 문자열 클래식 ASP

그래서 제대로 프랑스어 문자 변환에 문제가 있고 있었다. 기본적으로, SQL 데이터베이스에 데이터를 전송하는 형태를 갖는다. 그런 다음, 다른 페이지에이 DB에서 데이터를 검색하고 사용자에게 표시됩니다. 다른 페이지에있는 양식에 입력이 프랑스어로했기 때문에하지만 데이터 (문자열) 이상한 손상된 문자로 표시되고 있었다. 나는 올바른 문자 집합에 문자열을 컨버터 다음 함수를 사용하여이 문제를 극복했다. 그러나이 분명히 더 나은 솔루션 FIRST 변환 한 후 데이터베이스에 전송하는 것입니다. 이제 여기에 적절한 캐릭터 세트에 DB에서 검색 문자열을 변환하는 코드는 다음과 같습니다

Function ConvertFromUTF8(sIn)

    Dim oIn: Set oIn = CreateObject("ADODB.Stream")

    oIn.Open
    oIn.CharSet = "WIndows-1252"
    oIn.WriteText sIn
    oIn.Position = 0
    oIn.CharSet = "UTF-8"
    ConvertFromUTF8 = oIn.ReadText
    oIn.Close

End Function

여기에서이 기능을 가지고 : 클래식 ASP는 - 어떻게 UCS-2에 UTF-8 문자열을 변환하는?

내가 그들을 검색 할 때 좋은 - 투 - 이동 될 수 있도록, 이제 내 질문에, 무슨 기능을 내가 문자열 사전을 변환하는 데 사용합니까 된 후 데이터베이스로 보내?

바울의 방법을 시도 :

그래서 페이지 1 제출하면, 기능 ConvertFromUTF8을 제거하고 예전로를 남겨 다음 페이지 2. 바울의 솔루션을 시도에 검색되는 DB에 문자열을 전송하는 양식이 포함 2. 1 페이지, 페이지있다 (그것은 이상한 mangolian 문자를 반환). 그 후, 나는 1 페이지의 상단뿐만 아니라 2 페이지에 다음 줄을 추가했다.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

나는 또한 페이지 모두에서 다음이있다 :

Response.CodePage = 65001 
Response.CharSet = "UTF-8" 

그러나 그것은 작동하지 않았다 :(

편집 : 작동! 도와 주셔서 너무 모두 감사합니다! 내가 할 필요가 모든이었다 담기 DB 부분에 쓰기가 일어나고 (I도에 대해 이야기하지 않았다) 3 페이지의 상단에 "CODEPAGE = 65001".

해결법

  1. ==============================

    1.바울의 대답은 잘못 아니지만 이야기의 유일한 일부가 아닙니다

    바울의 대답은 잘못 아니지만 이야기의 유일한 일부가 아닙니다

    당신은 당신이 일관된 결과를 받고 있는지 확인하기 위해 각 단계를 통과해야합니다;

    다음 단계에 따라 페이지가 작동, 순간에 당신의 문제는 다른 사람이 UTF-8로 취급되고 있으며, 당신이 인코딩의 잘못 일치와 종료하는 동안 일부 페이지가 윈도우 1252으로 해석되고있다.

  2. ==============================

    2.일반적으로 - 그리고 그 단어는 veryyyyy 먼 장래를 가지고 - 당신은 더는 실망이야, 한편으로 변환 할 필요가 없습니다. ASP 페이지 떨어져 상단에는 쓰기 :

    일반적으로 - 그리고 그 단어는 veryyyyy 먼 장래를 가지고 - 당신은 더는 실망이야, 한편으로 변환 할 필요가 없습니다. ASP 페이지 떨어져 상단에는 쓰기 :

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    

    텔의 ASP가 전송하고 (보기의 서버 관점에서)받을 수 있음을 UTF-8. 또한 이는 2 바이트의 문자열을 사용하는 인터프리터를 지시한다. 그래서 데이터베이스 작성 또는 데이터베이스 모두에서 읽을 때 당신의 데이터베이스가 1 개 바이트 문자 또는 전환이 알아서하는 NCHAR 2 바이트를 사용하므로 경우, 자동 마술 간다. 그리고 실제로 그것에 대해입니다. 모든이 세트로 테스트하여 잘 어울리는 경우 테스트 할 수 있습니다 :

    áäÇçéčëíďńóöçÖöÚü

    그것은 좋은 테스트 세트, 그래서 당신은, 코드 페이지 1252을 사용하는 경우이 세트는 일부 '유럽'뿐만 아니라 일부 '유니 코드'문자가 들어 ... 그 유니 코드는 항상 실패합니다.

  3. from https://stackoverflow.com/questions/21866225/convert-utf-8-string-classic-asp-to-sql-database by cc-by-sa and MIT license