J'ai donc une application ASP.Net (vb.net). Il a une zone de texte et l'utilisateur y colle du texte de Microsoft Word. Donc, des choses comme le long tiret (charcode 150) arrivent en entrée. D'autres exemples seraient les citations intelligentes ou les caractères accentués. Dans mon application, je suis en train de les encoder en XML et de les transmettre à la base de données en tant que paramètre xml à une procédure stockée sql. Il est inséré dans la base de données au moment où l'utilisateur l'a saisi.Problème de support de caractères - Comment traduire des caractères ASCII plus élevés en caractères ASCII inférieurs
Le problème est que l'application qui lit ces données n'aime pas ces caractères. J'ai donc besoin de les traduire dans le jeu de caractères ascii inférieur (7bit je pense). Comment je fais ça? Comment puis-je déterminer quel encodage ils sont afin que je puisse faire quelque chose comme ce qui suit. Et demander simplement l'équivalent ASCII les traduire intelligemment ou dois-je écrire du code pour cela?
Aussi peut-être qu'il pourrait être plus facile de résoudre ce problème dans la page Web pour commencer. Lorsque vous copiez la sélection de caractères à partir de Word, il met plusieurs formats dans le Presse-papiers. Le texte droit est celui que je veux. Existe-t-il un moyen de faire en sorte que la zone de texte html reçoive ce texte lorsque l'utilisateur le colle? Dois-je définir l'encodage de la page Web d'une manière ou d'une autre?
System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(text))
code de l'application qui code l'entrée en xml:
Protected Function RequestStringItem(_
ByVal strName As System.String) As System.String
Dim strValue As System.String
strValue = Me.Request.Item(strName)
If Not (strValue Is Nothing) Then
RequestStringItem = strValue.Trim()
Else
RequestStringItem = ""
End If
End Function
' I get the input from the textboxes into an array like this
m_arrInsertDesc(intIndex) = RequestStringItem("txtInsertDesc" & strValue)
m_arrInsertFolder(intIndex) = RequestInt32Item("cboInsertFolder" & strValue)
' create xml file for inserts
strmInsertList = New System.IO.MemoryStream()
wrtInsertList = New System.Xml.XmlTextWriter(strmInsertList, System.Text.Encoding.Unicode)
' start document and add root element
wrtInsertList.WriteStartDocument()
wrtInsertList.WriteStartElement("Root")
' cycle through inserts
For intIndex = 0 To m_intInsertCount - 1
' if there is an insert description
If m_arrInsertDesc(intIndex).Length > 0 Then
' if the insert description is of the appropriate length
If m_arrInsertDesc(intIndex).Length <= 96 Then
' add element to xml
wrtInsertList.WriteStartElement("Insert")
wrtInsertList.WriteAttributeString("insertdesc", m_arrInsertDesc(intIndex))
wrtInsertList.WriteAttributeString("insertfolder", m_arrInsertFolder(intIndex).ToString())
wrtInsertList.WriteEndElement()
' if insert description is too long
Else
m_strError = "ERROR: INSERT DESCRIPTION TOO LONG"
Exit Function
End If
End If
Next
' close root element and document
wrtInsertList.WriteEndElement()
wrtInsertList.WriteEndDocument()
wrtInsertList.Close()
' when I add the xml as a parameter to the stored procedure I do this
cmdAddRequest.Parameters.Add("@insert_list", OdbcType.NText).Value = System.Text.Encoding.Unicode.GetString(strmInsertList.ToArray())
C'est ce que je saisis. Ceci est un peu de texte avec des caractères "amusants" comme: áíóúñѺª¿⌐¬ÇüéâäàåçêëèïîìÄÅææÆôöòûùÿÖÜ ¢ £ ¥ ₧ ƒá C'est ce que je veux en sortie. Ceci est du texte avec des caractères "amusants" comme: áíóúñѺª¿? ÇüéâäàåçêëèïîìÄÅææÆôöòûùÿÖÜ ¢ £ ¥? Ƒá –