2009-12-06 15 views
13

मैं एक क्लासिक एएसपी वेब पेज में यूनिकोड डेटा (zawgyi1 फ़ॉन्ट के साथ दर्ज) को स्टोर करने वाला एक nvarchar कॉलम कैसे दिखा सकता हूं?क्लासिक एएसपी: क्लासिक एएसपी में यूनिकोड स्ट्रिंग डेटा कैसे लिखें?

जब मैं पृष्ठ पर मूल्य पुनर्प्राप्त और लिखता हूं, तो यह "?????" दिखाता है।

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

दुर्भाग्य से, पाठ अभी भी रूप में "?????" प्रदान की गई है: मैं निम्नलिखित मेटा टैग के साथ UTF-8 के अपने एएसपी पृष्ठ का सामग्री प्रकार निर्धारित किया है।

क्लासिक एएसपी पृष्ठ में यूनिकोड मानों को प्रदर्शित करने के तरीके पर कोई सुझाव या विचार?

उत्तर

15

अपने पृष्ठ के शीर्ष पर आपकी कोडपृष्ठ परिभाषा के बारे में क्या?

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

धन्यवाद एक बहुत! इससे मेरा काम बनता है। मैं बस अपने पेज पर उस स्क्रिप्ट को जोड़ता हूं। आपका बहुत बहुत धन्यवाद! मैं तुरंत जवाब नहीं दे सकता 'coz मैं उस दिन ऑनलाइन नहीं हो सकता। धन्यवाद। – RedsDevils

+0

यह मजेदार नहीं है जब आप 5 साल पहले उत्तर दिए गए प्रश्न पर एक वोट प्राप्त करते हैं। – BenCr

15

सामग्री-प्रकार मेटा हेडर ब्राउज़र को यूटीएफ -8 एन्कोडेड टेक्स्ट स्ट्रीम के रूप में भेजी गई सामग्री का इलाज करने के लिए सूचित करता है। यह सुनिश्चित नहीं करता है कि भेजा गया स्ट्रीम वास्तव में यूटीएफ -8 है। यूटीएफ -8 को सही तरीके से संभालने के लिए आपको 3 चीजें करने की आवश्यकता है: -

  1. सुनिश्चित करें कि आपकी स्थिर सामग्री यूटीएफ -8 संगत एन्कोडिंग में सहेजी गई है।
  2. सुनिश्चित करें कि आपकी गतिशील सामग्री यूटीएफ -8 को एन्कोड किया गया है।
  3. क्लाइंट को सूचित करें कि सामग्री यूटीएफ -8 एन्कोडेड है।

आइटम 1 की आवश्यकता है कि या तो आप वास्तव में एक UTF-8 एन्कोडेड फ़ाइल के रूप में या उस फ़ाइल में आपके सभी स्थैतिक सामग्री ASCII वर्ण सीमा (0-127) के भीतर है एएसपी फ़ाइल सहेजें। नोट अगर आप यूटीएफ -8 के रूप में सहेजते हैं तो आपके सभी सर्वर-साइड स्क्रिप्ट को ASCII वर्ण श्रृंखला के भीतर वर्णों का उपयोग करना चाहिए। विजुअल स्टूडियो में आप "एएस फाइल सहेज रहे हैं ..." और फिर सेव बटन पर छोटे तीर पर क्लिक करके ऐसा कर सकते हैं।

आइटम 2 की आवश्यकता है कि Response.CodePage संपत्ति UTF-8 कोड पेज 65001 पर सेट है, तो आप कोड में या ASP फ़ाइल की पहली पंक्ति पर <%@ %> घोषणाओं के लिए विशेषता CODEPAGE=65001 जोड़ कर ऐसा कर सकते हैं। यदि आप इसे कोड में करते हैं तो आपको Response.Write पर किसी भी कॉल से पहले इसे सेट करना होगा। और: chr या asc कार्यों का उपयोग न करें (65001 का उपयोग करते समय ये छोटी हैं) लेकिन इसके बजाय chrw और ascw का उपयोग करें।

आइटम 3 आवश्यक है कि Content-Type शीर्षलेख में charset=UTF-8 क्वालीफायर शामिल है। जैसा कि आप पहले से ही कर रहे हैं आप इसे मेटा हेडर के साथ कर सकते हैं। व्यक्तिगत रूप से मुझे लगता है कि थोड़ा सा झुकाव होने के लिए, मैं कोड में Response.Charset = "UTF-8" का उपयोग करना पसंद करता हूं। यह सत्य Content-Type HTTP शीर्षलेख पर योग्यता रखता है।

+0

धन्यवाद एंथनी WJones आपकी मद 2 मेरी समस्या के साथ काम करता है। धन्यवाद! – RedsDevils

+0

हमारी साइट पर हालांकि हमारे पास एचटीएमएल में मेटा तत्व जोड़ा गया था, फिर भी मुझे अभी भी प्रतिक्रिया जोड़नी पड़ी। चार्सेट, धन्यवाद Anythony। – svandragt

1

यहाँ एएनएसआई से UTF-8 एन्कोडिंग के लिए बैच-परिवर्तित एएसपी फ़ाइलों के लिए एक उपयोगी स्क्रिप्ट है:

<HTML> 
<HEAD> 
<TITLE>ASP UTF-8 Converter - TFI 13/02/2015</TITLE> 
</HEAD> 
<BODY style='font-face:arial;font-size:11px'> 
<% 
Dim fso, folder, files, NewsFile, sFolder, objFSO, strFileIn, strFileOut 
Set fso = CreateObject("Scripting.FileSystemObject") 
sFolder = "C:\inetpub\wwwroot\sitefolder" 

Function ANSItoUTF8(ANSIFile) 
    UFT8FileOut=ANSIFile&".utf8" 
    Set oFS = CreateObject("Scripting.FileSystemObject") 
    Set oFrom = CreateObject("ADODB.Stream") 
    sFFSpec = oFS.GetAbsolutePathName(ANSIFile) 
    Set oTo = CreateObject("ADODB.Stream") 
    sTFSpec = oFS.GetAbsolutePathName(UFT8FileOut) 
    oFrom.Type = 2 'adTypeText 
    oFrom.Charset = "Windows-1252" 
    oFrom.Open 
    oFrom.LoadFromFile sFFSpec 
    oTo.Type = 2 'adTypeText 
    oTo.Charset = "utf-8" 
    oTo.Open 
    oTo.WriteText oFrom.ReadText 
    oTo.SaveToFile sTFSpec,2 
    oFrom.Close 
    oTo.Close 
    oFS.DeleteFile sFFSpec 
    oFS.MoveFile sTFSpec,sFFSpec 
End Function 

ConvertFiles fso.GetFolder(sFolder), True 

Function ConvertFiles(objFolder, bRecursive) 
    Dim objFile, objSubFolder 
    For each objFile in objFolder.Files 
     If Ucase(fso.GetExtensionName(objFile)) = "ASP" Then 
      ANSItoUTF8 objFile.path 
      response.write "&bull; Converted <B>"&fso.GetAbsolutePathName(objFile)&"</B> from ANSI to UTF-8<BR>" 
     End If 
    Next 

    If bRecursive = true then 
     For each objSubFolder in objFolder.Subfolders 
      ConvertFiles objSubFolder, true 
     Next 
    End If 
End Function 

%> 
</BODY> 
</HTML> 
संबंधित मुद्दे