Dois-je changer de l'UTF-8, UTF-16 pour accueillir des caractères Chinois dans mon code HTML?
Je suis en utilisant ASP.NET MVC, MS SQL et IIS. J'ai un peu d'utilisateurs qui ont utilisé des caractères Chinois dans leurs informations de profil. Cependant, quand je l'affiche cette information est présente comme æŽå¼·è¯
mais ils sont corrects dans ma base de données. Actuellement, mon UTF pour mes pages HTML est défini à l'UTF-8. Dois-je changer pour de l'UTF-16? Je comprends qu'il ya un quelques problèmes qui peut venir de cela, mais ce sont mes choix?
Merci,
Aaron
- êtes-vous à l'aide de
htmlentities()
ouhtmlspecialchars()
lors de la sortie? - ce ne sont là que pour PHP, non?
- Avez-vous essayé de préciser votre jeu de caractères dans vos balises meta? w3.org/International/questions/qa-html-encoding-declarations
Vous devez vous connecter pour publier un commentaire.
UTF-8 et UTF-16 coder exactement le même jeu de caractères. Ce n'est pas que de l'UTF-8 ne couvre pas les caractères Chinois et UTF-16 ne.
UTF-16 utilise uniformément 16 bits pour représenter un caractère; tandis que de l'UTF-8 utilise 1, 2, 3, jusqu'à un maximum de 4 octets, en fonction du caractère, de sorte que d'un caractère ASCII est représenté encore que 1 octet.
Commencez avec cet article de Wikipédia pour se faire une idée derrière elle.
Donc, il y a peu de chance de passer à l'UTF-16 va vous aider à tous. Il y a une chance que ça rend les choses pires, comme il est mentionné dans la question, vous avez le lien ci-dessus. Il y a un problème quelque part d'autre dans votre programme d'installation, qui n'est pas correctement prendre en compte la non-ASCII ou non des caractères Latin-1. Assurez-vous que chaque partie de votre programme d'installation fonctionne en UTF-8.
Tout le codage UTF devrait fonctionner de la même chose dans leur capacité à représenter des caractères Unicode afin de passer à l'UTF-16 ne serait pas aider. Il y a un problème de codage de quelque part et avec l'encodage UTF-16, vous ne finissent avec différents mauvaise représentation HTML. Bien sûr, si vous avez une bibliothèque qui, tout simplement, encode les caractères non-ASCII comme des entités et prend en charge les caractères larges, votre problème peut être résolu par le commutateur. Il y a cependant des caractères qui ont besoin de 2 caractères larges et il s'agit encore indiqué mal, bien que les utilisateurs peuvent rarement d'avis. La meilleure option serait d'avoir tout ce qui est de produire le code HTML afin d'interpréter votre UTF-8 correctement.