caratteri cinesi in sito web

  • Creatore Discussione Creatore Discussione makjack
  • Data di inizio Data di inizio

makjack

Utente Attivo
2 Nov 2009
53
0
6
Salve, sto provando ad inserire dei caratteri in cinese su di un sito web fatto in ASP.
Ho provato a mettere le frasi in cinese in un file inc_cinese.asp ma mi da questo errore:

Tipo di errore:
Active Server Pages, ASP 0239 (0x80004005)
I file ASP UNICODE non sono supportati.

in che modo posso risolvere?
Grazie mille in anticipo.
F.
 
Ciao,

solo per prova metti nella pagina asp come charset e unicode UTF-8

<%Response.charset="utf-8"%>

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

Vale.
 
Grandeeeeeeeeeeee!

senti l'ho messo per prova solo in una pagina del sito come sotto e sembra che vada bene, ma vorrei chiederti la cortesia di indicarmi il posto giusto dove inserire quel codice. Inoltre il file "inc_cinese.asp" lo devo salvare per forza con codifica UTF-8? non è che poi mi causa altri problemi?
scusa per la domanda forse stupida ma per me è arabo!
Grazie mille ancora


<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta content="index,follow" name="robots">
<meta content="<%=Motori_Keywords%>" name="keywords">
<meta content="<%=Motori_Description%>" name="description">
<meta http-equiv="imagetoolbar" content="no">

<%Response.charset="utf-8"%>

<title><%=NomeSito%></title>
<link rel="shortcut icon" href="/favicon.ico" >
</head>
<link rel="stylesheet" href="include/ecommerce.css?version=2" type="text/css" />
<body background="<%=Body_Background%>" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">

<table width="990" border="0" align="center" cellpadding="0" cellspacing="0">
....
....
....
 
Ciao,

se la pagina inc_cinese.asp è una pagina inclusa metti la codifica utf-8 nella pagina che la include prima del tag <html>

La codifica UTF-8 supporta tutti i caratteri.


Vale.
 
Posso chiederti un'altra cosina?

all'interno di questo codice come faccio a sostituire "Registration to the Newsletter of" con il tag per richiamare la frase poi in cinese?
Grazie


%
Function MailSubscribe(strTo,strKey)
Dim SubscribeMail
Set SubscribeMail = Server.CreateObject("CDONTS.NewMail")
SubscribeMail.From = strPageTitle & "<" & strSenderMail & ">"
SubscribeMail.To = strTo
SubscribeMail.Subject = "Registration to the Newsletter of " & strWebSite & ""
 
Ciao,

per curiosità hai fatto una prova sostituendo il messaggio nel soggetto della mail che invii con CDONTS, inserendo la frase scritta in Cinese e usando UTF-8?

<%Response.charset="utf-8"%>

questo non l'ho capito:

all'interno di questo codice come faccio a sostituire "Registration to the Newsletter of" con il tag per richiamare la frase poi in cinese?

cosa intendi per tag?

Valeria.
 
Non va perche il problema è questo:

nel file che invia l'ordine ci sono queste righe con le quali viene preparata la mail che riceve il cliente:
Codice:
'---Invio la mail di conferma ordine al cliente			
MailBody = BodyConfermaOrdineCliente
MailBody = Replace(MailBody, "[statoordine]", OrdineOK, 1, -1, 1)
MailBody = Replace(MailBody, "[pagamento]", NomeTipoPagamento, 1, -1, 1)

Questo codice invece è contenuto nell'altra pagina nella quale sono riportate tutte le parole/frasi presenti sul sito e quindi anche la riga con il testo dell'intera mail. Le parti tra le parentesi quadre si leggono bene ma i caratteri cinesi vengono interpretati con punti interrogativi. Ho provato a mettere quel codice in entrambe le pagine ma nessuna differenza. Hai qualche idea?
Grazie davvero mille.

Codice:
BodyConfermaOrdineCliente = 订单代码: [IDOrdine]<br><br> 选择的支付方式: [infopagamento], ecc ecc"
 
Non va perche il problema è questo:

nel file che invia l'ordine ci sono queste righe con le quali viene preparata la mail che riceve il cliente:
Codice:
'---Invio la mail di conferma ordine al cliente			
MailBody = BodyConfermaOrdineCliente
MailBody = Replace(MailBody, "[statoordine]", OrdineOK, 1, -1, 1)
MailBody = Replace(MailBody, "[pagamento]", NomeTipoPagamento, 1, -1, 1)

Questo codice invece è contenuto nell'altra pagina nella quale sono riportate tutte le parole/frasi presenti sul sito e quindi anche la riga con il testo dell'intera mail. Le parti tra le parentesi quadre si leggono bene ma i caratteri cinesi vengono interpretati con punti interrogativi. Ho provato a mettere quel codice in entrambe le pagine ma nessuna differenza. Hai qualche idea?
Grazie davvero mille.

Codice:
BodyConfermaOrdineCliente = 订单代码: [IDOrdine]<br><br> 选择的支付方式: [infopagamento], ecc ecc"

Ciao,

non sta li il problema, ne CDONTS ne CDOSYS sono in grado di inviare una email con caratteri orientali (Cinesi) devi usare PERSITS.MAILSENDER.

Se un utente vede la tua pagina con XP vede solo caratteri indecifrabili, se sono inseriti in una pagina .asp o .html indifferentemente dallo charset="utf-8"

minimo per visualizzarli è installare una font chiamata Arial Unicode MS 22.2 MB, scaricabile in rete, o installare dal Pannelo di Controllo Impostazioni Lingua -> Installa Lingua Orientale circa 250 MB.

In Vista e Seven vengono installate di default.

Se hai utenti con XP e non installano la Font o il supporto per la lingua Orientale vedranno caratteri indecifrabili.

L'ho visto solo oggi, uso Linux e il supporto per i caratteri Orientali e altri è installato. Con Vista e Seven nessun problema, ma quando ho provato con XP vedevo caratteri indecifrabili.

Installata la font, i caratteri si visualizzano regolarmente, unico contro: se faccio un copia e incolla dei caratteri Cinesi la pagina deve essere salvata con codifica UTF-8 e non ASCII (Codifica Default).

L'unico modo per inviare la mail in Cinese è con Persits.MailSender, servono codici e codifiche non compatibili con CDONTS e CDOSYS.

Vedi se il tuo host supporta quel servizio per l'invio della mail dal sito.

Valeria.
 
Intanto grazie mille per il tempo che mi dedichi, sei gentilissima!

Riguardo windows e le varie versioni non credo ci siano problemi perche il tutto è dedicato agli utenti cinesi per cui credo che il loro pc sia munito del necessario. Dimmi se sbaglio (ho inserito solo questo nelle pagine del sito <%Response.charset="utf-8"%>)

Riguardo invece all'invio delle mail con PERSITS.MAILSENDER mi informerò subito e ti farò sapere.
Thanks ;-)
 
L'assistenza Aruba mi ha aiutato fornendomi un po di materiale PERSITS.MAILSENDER già pronto da utilizzare, funzionante!
La cosa migliore sarebbe però capire come adeguare quello già presente CDO.Message in Persits.MailSender.
Credi che sia fattibile?

ad esempio questo :

Codice:
<%'Now lets put the variables and other information we need into the mailing script 
Set MiaMail = Server.CreateObject("CDO.Message")
MiaMail.From = email
buckup = MailAdmin
MiaMail.To = MailAdmin
MiaMail.Subject = sito 
MiaMail.HTMLBody = MyBody
MiaMail.Fields.Update()
MiaMail.Send()
Set MiaMail = Nothing
%>	
<%Else
Response.Redirect "errorespam.asp"
End If
%>

in questo:


' IMPOSTAZIONE BASE, SMTP SENZA AUTENTICAZIONE
strHost = "smtp.aruba.it"
Session.CodePage = 65001 ' UTF-8 code
If Request("Send") <> "" Then
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = strHost
Mail.From = Request("From") ' From address
Mail.FromName = Request("FromName") ' optional
Mail.AddAddress Request("To")
' message subject
Mail.Subject = Request("Subject")
' message body
Mail.Body = Request("Body")
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
strErr = ""
bSuccess = False
On Error Resume Next ' catch errors
Mail.Send ' send message
If Err <> 0 Then ' error occurred
strErr = Err.Description
else
bSuccess = True
End If
End If
%>

Grazie ancora
 
Ciao,

Codice:
<%'Now lets put the variables and other information we need into the mailing script 
Set MiaMail = Server.CreateObject("CDO.Message")
MiaMail.From = email
buckup = MailAdmin
MiaMail.To = MailAdmin
MiaMail.Subject = sito 
MiaMail.HTMLBody = MyBody
MiaMail.Fields.Update()
MiaMail.Send()
Set MiaMail = Nothing
%>	
<%Else
Response.Redirect "errorespam.asp"
End If
%>

Codice:
<%
email = "[email protected]"

MailAdmin = "[email protected]"

sito = "Dal Sito 选择的支付方式 " & Request.ServerVariables("HTTP_HOST")

MyBody = "<html><body><center>" & MyBody & "</center></body></html>"
MyBody = MyBody & "<table width=""300"" bgcolor=""#E0E0E0"" border=""1"" align=""center"">" & chr(13) & chr(10)
MyBody = MyBody & "<caption>Prova in HTML</caption>" & chr(13) & chr(10)
MyBody = MyBody & "<tr><th>Prodotti</th><th>选择的支付方式 选择的支付方式</th></tr>" & chr(13) & chr(10)
MyBody = MyBody & "</table>"

' IMPOSTAZIONE BASE, SMTP SENZA AUTENTICAZIONE
strHost = "smtp.aruba.it"
Session.CodePage = 65001 ' UTF-8 code
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = strHost
Mail.From = email
Mail.AddAddress MailAdmin
' soggetto messaggio
Mail.Subject = Mail.EncodeHeader(sito, "utf-8")
' messaggio in html
Mail.IsHTML = True
Mail.Body = MyBody
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
strErr = ""
bSuccess = False
On Error Resume Next ' catch errors
Mail.Send ' send message
If Err <> 0 Then ' error occurred
strErr = Err.Description
else
bSuccess = True
Response.Write "<p>Email inviata correttamente!</p>"
End If
%>

Non conoscendo il metodo come recuperi le variabili email, MailAdmin ecc... le ho messe in testa alla mail con dati già impostati.

Cambia:

email = "[email protected]"

e

MailAdmin = "[email protected]"

con la mail del mittente e del destinatario se è una newsletteres il metodo per recuperare le mail dei destinatari da un DB è lo stesso che usi con CDONTS.

Mail.Subject = Mail.EncodeHeader(sito, "utf-8")

usa Mail.EncodeHeader per tutti i dati che invii ES: un Nome, Cognome ecc... che contengono caratteri Cinesi

Nome=Request.form("Nome)

Mail.Nome = Mail.EncodeHeader(Nome, "utf-8") dove nome può essere un testo preimpostato come in cima all'esempio, un campo di un form o un DB

Mail.Nome = Mail.EncodeHeader(Request("Nome"), "utf-8")

Eccetto per il Body della mail

Mail.Body = MyBody

Per una prova cambia solo:

MailAdmin = "[email protected]" che è il .To del vecchio CDONTS

.AddAddress

Inserendo il tuo indirizzo di email, copia il file .asp (nominandolo con il nome che vuoi) sul server e lincati a quella pagina.


Valeria.
 
Grazie mille, solo per le spiegazioni che mi hai dato meriteresti una cena!

Senti ho provato a fare come dici tu, cambiando solo i 2 indirizzi, ho caricato la pagina e senza cliccare su "invio" ho ricevuto la mail con i dati ma continuo a vedere solo punti interrogativi al posto dei caratteri cinesi.
Qualche altra idea sul motivo?
Grazie ancora mille

Ti posto il codice:

<%
email = "[email protected]"
MailAdmin = "[email protected]"
sito = "Dal Sito 选择的支付方式"
MyBody = "<html><body><center>" & MyBody & "</center></body></html>"
MyBody = MyBody & "<table width=""300"" bgcolor=""#E0E0E0"" border=""1"" align=""center"">" & chr(13) & chr(10)
MyBody = MyBody & "<caption>Prova in HTML</caption>" & chr(13) & chr(10)
MyBody = MyBody & "<tr><th>Prodotti</th><th>选择的支付方式</th></tr>" & chr(13) & chr(10)
MyBody = MyBody & "</table>"
' IMPOSTAZIONE BASE, SMTP SENZA AUTENTICAZIONE
strHost = "smtp.aruba.it"
Session.CodePage = 65001 'UTF-8 code
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = strHost
Mail.From = email
Mail.AddAddress MailAdmin
' soggetto messaggio
Mail.Subject = Mail.EncodeHeader(sito, "utf-8")
' messaggio in html
Mail.IsHTML = True
Mail.Body = MyBody
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
strErr = ""
bSuccess = False
On Error Resume Next 'catch errors
Mail.Send ' send message
If Err <> 0 Then 'error occurred
strErr = Err.Description
else
bSuccess = True
Response.Write "<p>Email inviata correttamente!</p>"
End If
%>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<TITLE>AspEmail: Invio semplice</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

<H2>AspEmail</h2>

<% If strErr <> "" Then %>
<h3><FONT COLOR="#FF0000">Errore: <I><% = strErr %></I></FONT></h3>
<% End If %>

<% If bSuccess Then %>
<h3><FONT COLOR="#00A000">Inviata correttamente a <% = Request("To") %>.</FONT></h3>
<% End If %>

<FORM METHOD="POST" ACTION="prova2.asp">

<TABLE CELLSPACING=0 CELLPADDING=2 BGCOLOR="#E0E0E0">
<TR>
<TD>Host :</TD>
<TD><B><% = strHost %></B></TD>
</TR>
<TR>
<TD>Da :</TD>
<TD><INPUT TYPE="TEXT" NAME="From"></TD>
</TR>
<TR>
<TD>Nome Mittente:</TD>
<TD><INPUT TYPE="TEXT" NAME="FromName" value="nome mittente"></TD>
</TR>
<TR>
<TD>A:</TD>
<TD><INPUT TYPE="TEXT" NAME="To"></TD>
</TR>
<TR>
<TD>Oggetto:</TD>
<TD><INPUT TYPE="TEXT" NAME="Subject" value="Prova componente mail"></TD>
</TR>
<TR>
<TD>Messaggio:</TD>
<TD><TEXTAREA NAME="Body">Prova in corso</TEXTAREA></TD>
</TR>
<TR>
<TD COLSPAN=2><INPUT TYPE="SUBMIT" NAME="Send" VALUE="Invia"></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
 
Ultima modifica:
Ciao,

hai scritto:

L'assistenza Aruba mi ha aiutato fornendomi un po di materiale PERSITS.MAILSENDER già pronto da utilizzare, funzionante!.

Quindi con l'esempio che ti hanno fornito funziona.

Vedi i caratteri Cinesi?

Valeria.
 
Si nel corpo della mail si ma non nell'oggetto, però questo potrei risolverlo mettendo solo inglese...
La cosa invece che mi premeva risolvere era di modificare solo il mio vecchio codice in maniera tale da non stravolgere tutto il sito ed aggiungere solo la possibilità di inviare anche caratteri cinesi.
Dal sito possono partire diverse email quali: iscrizione nuovo utente, modifica utente, iscrizione mailinglist, modifica mailinglist, cancellazione mailing list, ordini, evasione degli ordini, notifiche varie ecc ecc.
Capirai quidni che sarebbe stato preferibile trovare il modo di modificare il codice già esistente e non cambiare tutto...
Comunque grzie ancora per l'impegno, mi hai fatto capire un bel po di cosine... ;-)

In effetti una delle mail parte da qui, se riuscissimo a settare "SubjectConfermaIscrizione" con il codice che hai indicato tu (Mail.EncodeHeader(SubjectConfermaIscrizione, "utf-8")) sarebbe perfetto:


If ConfermaMail Then
InvioMail MailServer, MailAdmin, EMail, SubjectConfermaIscrizione, Replace(Replace(Replace(BodyConfermaIscrizione, "[link]", UrlEcom & "conferma.asp?"&UserIDEncode(UserID & "{~}" & EMail)), "[firma]", FirmaEMail, 1, -1, 1), "<br>", vbCrLf, 1, -1, 1)
End If


Thanks Thanks
 
Ultima modifica:
Ciao,

l'esempio che ho fatto, quello che invia automaticamente la mail:


Codice:
<%
email = "[email protected]"

MailAdmin = "[email protected]"

sito = "Dal Sito 选择的支付方式 " & Request.ServerVariables("HTTP_HOST")

MyBody = "<html><body><center>" & MyBody & "</center></body></html>"
MyBody = MyBody & "<table width=""300"" bgcolor=""#E0E0E0"" border=""1"" align=""center"">" & chr(13) & chr(10)
MyBody = MyBody & "<caption>Prova in HTML</caption>" & chr(13) & chr(10)
MyBody = MyBody & "<tr><th>Prodotti</th><th>选择的支付方式 选择的支付方式</th></tr>" & chr(13) & chr(10)
MyBody = MyBody & "</table>"

' IMPOSTAZIONE BASE, SMTP SENZA AUTENTICAZIONE
strHost = "smtp.aruba.it"
Session.CodePage = 65001 ' UTF-8 code
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = strHost
Mail.From = email
Mail.AddAddress MailAdmin
' soggetto messaggio
Mail.Subject = Mail.EncodeHeader(sito, "utf-8")
' messaggio in html
Mail.IsHTML = True
Mail.Body = MyBody
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
strErr = ""
bSuccess = False
On Error Resume Next ' catch errors
Mail.Send ' send message
If Err <> 0 Then ' error occurred
strErr = Err.Description
else
bSuccess = True
Response.Write "<p>Email inviata correttamente!</p>"
End If
%>


Perchè funziona correttamente, questo è il risultato, ho tolto solo & Request.ServerVariables("HTTP_HOST") per non inviare la url di provenienza

Schermata.png

Non c'è diversita tra un metodo e l'altro per l'invio di una email, sia con CDONTS, CDOSYS, o PERSITS.MAILSENDER

il From = Mittente email

il To = Destinatario email

il Subject = Soggetto della email

il HTMLBody o TextBody = formato della email in Html o Testo

Questo per CDONTS

In PERSITS.MAILSENDER

il From = Mittente email

il AddAddress = destinatario email

il Body = invio della email in formato testo

per abilitare l'invio in formato Html

IsHTML = True prima di Body

Ho lasciato i novi variabili che usi con CDONTS

MiaMail.From = email
buckup = MailAdmin
MiaMail.To = MailAdmin
MiaMail.Subject = sito
MiaMail.HTMLBody = MyBody


buckup = MailAdmin questo non so a cosa è associato


Mail.From = email
Mail.AddAddress MailAdmin
Mail.Subject = Mail.EncodeHeader(sito, "utf-8") ' o Mail.Subject = sito (probabile non arrivo con codifica utf-8)
Mail.IsHTML = True
Mail.Body = MyBody


il resto non deve essere modificato.

Usa come descritto nel post sopra:

Mail.Subject = Mail.EncodeHeader(sito, "utf-8")

Mail.EncodeHeader per tutti i dati che invii ES: un Nome, Cognome ecc... che contengono caratteri Cinesi


Codice:
strHost = "smtp.aruba.it"
Session.CodePage = 65001 ' UTF-8 code
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = strHost
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
strErr = ""
bSuccess = False
On Error Resume Next
Mail.Send
If Err <> 0 Then ' error occurred
strErr = Err.Description
else
bSuccess = True
End If

Il concetto è lo stesso, applica le tue variabili al nuovo metodo di spedizione.

Mail.From = email
Mail.AddAddress MailAdmin
Mail.Subject = Mail.EncodeHeader(sito, "utf-8") ' o Mail.Subject = sito (probabile non arrivo con codifica utf-8)
Mail.IsHTML = True
Mail.Body = MyBody


Valeria.
 
Ho copiato tutto il tuo codice, modificando solo i 2 indirizzi email, carico la pagina ed arriva la mail con i punti interrogativi sia nel corpo che nel titolo ecc ecc
a questo punto presumo che sia un problema di aruba.
Grazie ancora di tutto ;-)
 

Discussioni simili