web-dev-qa-db-fra.com

La page de codes 65001 et utf-8 sont-elles la même chose?

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Le code ci-dessus est-il correct?

44
Mask

Oui.

UTF-8 est CP65001 dans Windows (ce qui est juste un moyen de spécifier UTF-8 dans les éléments de page de code hérités). Pour autant que je lis ASP peut gérer UTF-8 lorsqu'il est spécifié de cette façon.

47
Joey

Votre code est correct bien que je préfère définir le CharSet dans le code plutôt que d'utiliser la balise META: -

<% Response.CharSet = "UTF-8" %>

La page de codes 65001 fait référence au jeu de caractères UTF-8. Vous devez vous assurer que votre page asp (et toutes les inclusions) sont enregistrées en UTF-8 si elles contiennent des caractères en dehors du jeu de caractères standard ASCII.

En spécifiant l'attribut CODEPAGE dans le bloc <% @, vous indiquez que tout ce qui est écrit à l'aide de Response.Write doit être codé à la page de code spécifiée, dans ce cas 65001 (utf-8). Il convient de garder à l'esprit que cela n'affecte aucun contenu statique qui est envoyé mot pour mot à la réponse. D'où la raison pour laquelle le fichier doit être réellement enregistré à l'aide de la page de code spécifiée.

La propriété CharSet de la réponse définit la valeur CharSet de l'en-tête Content-Type. Cela n'a aucun impact sur la façon dont le contenu peut être encodé, il indique simplement au client quel encodage est reçu. Encore une fois, il est important que sa valeur corresponde au codage réel envoyé.

9
AnthonyWJones

Oui, 65001 est l'identificateur de page de codes Windows pour UTF-8, tel que documenté sur le site Web de Microsoft . Wikipedia suggère que la page de codes IBM 128 et la page de codes SAP 4110 sont également des indicateurs pour UTF-8.

3
Tim
response.codepage = 65001

semblent donner un mauvais résultat lorsque le fichier physique est enregistré en utf-8

Sinon, cela fonctionne comme prévu.

1
VbNetMatrix