Le codage HTML des questions - “” caractère montrant au lieu de “ ”
J'ai une application héritée juste de commencer à faire des siennes, pour quelque raison que ce soit, je ne suis pas sûr. Il génère un tas de code HTML qui est transformé en PDF rapports par ActivePDF.
Le processus fonctionne comme ceci:
- Tirer un modèle HTML à partir d'une base avec des jetons dans il être remplacé (par exemple, "~CompanyName~", "~CustomerName~", etc.)
- Remplacer les jetons avec les données réelles
- De l'ordre sur le code HTML avec une simple fonction regex que la propriété formats HTML balise de valeurs d'attribut (assure guillemets, etc, depuis ActivePDF le moteur de rendu de hait rien mais des guillemets simples autour de valeurs d'attribut)
- Envoyer le code HTML pour un service web qui crée le fichier PDF.
Quelque part dans ce désordre, les espaces insécables à partir du modèle HTML (le
s) sont l'encodage ISO-8859-1, de sorte qu'elles s'affichent de manière incorrecte comme un "Â" caractère lors de l'affichage du document dans un navigateur (FireFox). ActivePDF dégueule sur ces caractères non-UTF8.
Ma question: comme je ne sais pas d'où le problème vient du fait et n'ont pas le temps pour l'explorer, est-il un moyen facile de ré-encoder ou trouver et remplacer les mauvais caractères? J'ai essayé de l'envoyer par le biais de cette petite fonction que j'ai jeté, mais il se transforme en gobbledegook ne change rien.
Private Shared Function ConvertToUTF8(ByVal html As String) As String
Dim isoEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
Dim source As Byte() = isoEncoding.GetBytes(html)
Return Encoding.UTF8.GetString(Encoding.Convert(isoEncoding, Encoding.UTF8, source))
End Function
Des idées?
EDIT:
Je suis arriver avec cela pour l'instant, bien qu'il ne semble guère être une bonne solution:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function
- Le HTML contient aucune méta de détails pour décrire son jeu de caractères?
- [Précédente, a commenté supprimé] réponse Courte: non.
- Pour moi travaillé: utf8_decode()
Vous devez vous connecter pour publier un commentaire.
Que j'avais de l'encodage UTF-8, puis, pas ISO-8859-1. L'espace insécable est le byte 0xA0 en ISO-8859-1; lorsqu'ils sont encodés en UTF-8, ça serait 0xC2,0xA0, qui, si vous (à tort) la considèrent comme ISO-8859-1 en tant que
"Â "
. Qui comprend une fuite nbsp dont vous ne pouvez pas le remarquer; si cet octet n'est pas là, alors quelque chose d'autre a malmené votre document et nous avons besoin de voir plus loin jusqu'à trouver ce qui.Quelle est la regexp, comment la création de modèles de travail? Il semble être un bon analyseur HTML impliqué quelque part, si votre
chaînes sont (bien) être transformé en U+00A0 ESPACE insécable caractères. Si oui, vous pouvez simplement le processus de votre modèle de mode natif dans les DOM, et de lui demander de serialise à l'aide de l'encodage ASCII pour garder les caractères non-ASCII comme des références. Ce serait aussi arrêter de vous avoir à faire des regex de post-traitement sur le code HTML lui-même, qui est toujours fortement de l'affairisme.Bien de toute façon, pour l'instant vous pouvez ajouter l'un des éléments suivants de votre document
<head>
et voir si cela fait regarder à droite dans le navigateur:<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta charset="utf-8">
Si vous avez fait cela, alors aucun problème restant est ActivePDF la faute.
<meta charset="utf-8">
en HTML5<meta charset="utf-8">
encore. Lehttp-equiv
version est toujours valide en HTML5 et est mieux pris en charge.Si quelqu'un avait le même problème que moi et le jeu de caractères a déjà été correct, il suffit de faire ceci:
UTF-8 with BOM
au lieu deUTF-8
. Pour voir ce sublime texte, vous devezshow_encoding
ensemble detrue
dans les Paramètres de l'Utilisateur.Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\Program Files\wamp\wamp\www\projects\kerala\kerala_public_html\edit\business_details.php:1) in D:\Program Files\wamp\wamp\www\projects\kerala\kerala_public_html\user\include\fg_membersite.php on line 152
Problème:
Même j'ai été confronté au problème où nous étions l'envoi '£' avec une chaîne de caractères dans la requête POST CRM Système, mais quand nous avons fait la OBTENIR de l'appel de CRM , il était en train de revenir '£' avec une certaine chaîne de contenu. Donc, ce que nous avons analysé est que '£' a se converti à '£'.
Analyse:
Le problème que nous avons trouvé après avoir fait des recherches, c'est que dans l'après appel, nous avons mis HttpWebRequest ContentType comme "text/xml" tandis que dans d'OBTENIR de l'Appel, il a été "text/xml; charset:utf-8".
Solution:
De sorte que la partie de la solution, nous avons inclus les charset:utf-8 dans la requête POST et ça fonctionne.
Dans mon cas, j'ai été prise en croix latine signe au lieu de nbsp, même qu'une page a été correctement encodé en UTF-8. Rien de ci-dessus a aidé à résoudre le problème et j'ai essayé toutes.
En fin de compte le changement de police pour IE (avec un navigateur spécifique, css) a aidé, j'ai été en utilisant Helvetica-Nue comme un corps de police changeant de la police Arial résolu le problème .
Bien je l'ai eu ce Problème aussi dans mes quelques sites web et tout ce que je dois faire est de personnaliser le contenu fetler pour les entités HTML. avant que plus je les supprimer plus je l'ai eu, donc il suffit de changer vous html fiter ou de l'analyse de la fonction de la page et ça a fonctionné. Ses principalement en raison des éditeurs HTML dans la plupart des Cms. le fait qu'ils stockent analyser les données à l'origine du problème (Dans Mon cas). Peut que ce serait Aider dans votre cas trop
J'ai eu le même genre de problème. Apparemment, c'est tout simplement parce que PHP ne reconnaît pas l'utf-8.
Je déchirait mes cheveux au début, quand un '£' gardé signe montrant que '£', bien que figurant sur ok dans DreamWeaver. Finalement, je me suis souvenu que j'avais eu des problèmes avec des liens par rapport à l'indice de fichier, lorsque les pages, si on les regarde directement serait de travailler avec des diaporamas, mais pas lorsqu'il est utilisé avec un include (mais c'est à côté de la question. De toute façon, je me demandais si cela pourrait être un problème similaire, donc au lieu de mettre dans la page que j'ai eu des problèmes avec, j'ai simplement mis dans le index.php fichier - problème fixe tout au long de.
La raison pour cela est PHP ne reconnaît pas l'utf-8.
Ici, vous pouvez vérifier pour tous les Caractères Spéciaux en HTML
http://www.degraeve.com/reference/specialcharacters.php