Il y a un client qui souhaite créer une version russe de son site Web. J'utilise l'encodage UTF-8 pour le front-end et le backend, mais les informations statiques russes générées via la base de données sont tronquées. Si elles sont affichées à l'aide de GB2312, les informations russes statiques générées via la base de données s'affichent correctement, mais le texte russe dans le fichier modèle est tronqué.
Les caractéristiques spécifiques sont les suivantes :
1. Réalisez la langue russe normale grâce à des modèles.
2. Les informations statiques russes générées via la base de données backend sont affichées normalement dans le backend mais tronquées dans le frontend.
3. L'anglais est normal.
Expressions similaires ou différentes liées au sujet
FSO écrit des fichiers codés en UTF-8
Comment FSO peut-il générer des fichiers codés en utf-8 ?
Quel est le format d'encodage par défaut des fichiers générés par FSO ?
Comment convertir en encodage UTF-8
Problème avec FSO générant des pages Web statiques
Le code permettant d'utiliser FSO pour générer des fichiers en ASP est le suivant :
Copiez le code comme suit :
fonction createfile (sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
set f1=fso.opentextfile(sfilename,2,true,-1)
f1.write(scontent)
f1.fermer
définir fso = rien
fonction de fin
fso.opentextfile(sfilename,2,true,-1) Le dernier paramètre -1 spécifie le format d'encodage comme Unicode. Lorsque le format d'encodage est Unicode, la page Web affiche UTF-16 little-endian.
Méthode OpenTextFile
Crée le fichier spécifié et renvoie un objet TextStream, qui peut être utilisé pour lire ou écrire le fichier créé.
object.OpenTextFile(filename[, iomode[, create[, format]]])
Objet paramètre, obligatoire. Doit être le nom d’un objet FileSystemObjec ou Folder. C'est l'OFS.
nom de fichier, obligatoire. Une expression de chaîne spécifiant le fichier à créer. Voici le nom du fichier.
iomode, paramètre facultatif, indique si le fichier est utilisé pour la lecture, l'écriture ou l'ajout. La valeur par défaut est 1 pour la lecture, 2 pour l'écriture et 8 pour l'ajout.
create, paramètre facultatif, s'il faut créer le fichier s'il n'existe pas, la valeur par défaut est false, si vous souhaitez le créer, définissez-le sur true.
format, le paramètre peut être l'un des paramètres suivants, la valeur par défaut est le format ASCII et nous ne voulons pas d'utf-8 :
TristateUseDefault -2 ouvre le fichier au format par défaut du système.
TristateTrue -1 ouvre le fichier au format Unicode.
TristateFalse 0 Ouvrez le fichier au format ASCII.
Il n'y a que trois attributs de codage de FSO. Les valeurs par défaut du système sont Unicode et ASCII, et nous ne voulons pas d'utf-8. Par conséquent, les fichiers générés à l'aide des composants FSO sur les systèmes chinois sont généralement au format de codage gb2312.
Première solution
L'encodage GB2312 contient des lettres russes. Si la page est définie sur le chinois simplifié GB2312, le russe peut être affiché normalement. Cependant, étant donné que le chinois affiche par défaut "Song Ti", le russe sera affiché sous forme de caractères pleine chasse dans "Song Ti". ce qui est moche, il faut donc utiliser des polices étrangères, telles que "New Rome" ou "Arial", etc. Les clients chinois peuvent y communiquer, mais lorsque les vrais Russes naviguent sur le Web, ils doivent télécharger et installer le chinois, ce qui n'est pas idéal et peut les amener à renoncer à naviguer sur le Web.
Solution 2
ASP étant un langage ancien, certaines de ses fonctionnalités prennent très mal en charge UTF-8. FSO ne prend pas en charge la génération directe de fichiers au format UTF-8 car il ne peut pas spécifier le format de fichier requis. Par exemple, si vous souhaitez générer un fichier au format UTF-8, vous ne pouvez pas utiliser l'objet Scripting.FileSystemObject couramment utilisé. Nous devons changer notre façon de penser et utiliser Adodb.Stream. C'est ainsi que sont implémentés certains programmes de blog actuels, comme zblog.
La fonction de l'objet Scripting.FileSystemObject pour créer des fichiers est la suivante :
FileSystemObject.CreateTextFile (nom de fichier [, overwrite [, unicode]])
L'attribut Unicode est décrit comme ceci :
Facultatif. Valeur booléenne indiquant s'il faut créer le fichier au format de fichier Unicode ou ASCII. Cette valeur est True si le fichier est créé au format de fichier Unicode ; False si le fichier est créé au format de fichier ASCII. Si cette section est omise, un fichier ASCII est supposé avoir été créé.
Malheureusement, vous ne pouvez pas utiliser cette fonction pour créer des fichiers au format UTF-8.
Utilisez l'objet ADODB.Stream, voir ci-dessous pour l'utilisation :
Copiez le code comme suit :
Définir objStream = Server.CreateObject("ADODB.Stream")
Avec objStream
.Ouvrir
.Charset = "utf-8"
.Position = objStream.Taille
.WriteText=str
.SaveToFile serveur.mappath("/sitemap.xml"),2
.Fermer
Terminer par
Définir objStream = Rien
Annexe : Introduction à ASCII, Unicode et UTF-8
ASCII est un jeu de caractères comprenant des lettres anglaises majuscules et minuscules, des chiffres, des caractères de contrôle, etc. Il est représenté par un octet et va de 0 à 127.
Les caractères représentés par ASCII étant très limités, chaque pays ou région a proposé son propre jeu de caractères basé sur celui-ci. Par exemple, GB2312, largement utilisé en Chine, assure le codage des caractères chinois et est représenté par deux octets.
Ces jeux de caractères sont incompatibles les uns avec les autres et les mêmes nombres peuvent représenter des caractères différents, ce qui pose des problèmes lors de l'échange d'informations.
Unicode est un jeu de caractères qui mappe tous les caractères du monde à un nombre unique (point de code), tel que le nombre 0x0041 correspondant à la lettre a. Unicode est encore en développement et contient de plus en plus de caractères.
Lors du stockage de caractères représentés par Unicode, une certaine méthode de codage est requise, telle que UCS-2, qui utilise deux octets pour représenter les caractères codés Unicode. UTF-8 est une autre méthode de codage du jeu de caractères Unicode. Il est de longueur variable, jusqu'à 6 octets, et les caractères inférieurs à 127 sont représentés par un octet. Il a le même résultat que le jeu de caractères ASCII, il a donc très peu de caractères. bonne compatibilité, le texte anglais en codage ASCII peut être traité comme un codage UTF-8 sans modification et est largement utilisé.