Maison  >  Article  >  interface Web  >  Le chemin chinois Nodejs est tronqué

Le chemin chinois Nodejs est tronqué

WBOY
WBOYoriginal
2023-05-28 15:03:091504parcourir

Node.js est une solution backend open source multiplateforme écrite en JavaScript. Il prend en charge la création d'applications JavaScript côté serveur et est sans doute l'une des solutions les plus populaires pour le développement back-end aujourd'hui. Cependant, lorsque vous utilisez Node.js, si vous traitez des chemins chinois, vous rencontrez souvent des caractères tronqués. Cet article explique comment résoudre ce problème.

1. Description du problème

Lors de l'utilisation de Node.js pour traiter les chemins chinois, le nom du fichier ou du répertoire peut être tronqué, par exemple :

Error: ENOENT: no such file or directory, scandir 'C:Users妲己Desktop    est'
#🎜🎜 # Ou en utilisant la méthode fs.readdir() pour lire le répertoire, les résultats suivants sont obtenus :

[ 'C:\Users\琪亚娜\Desktop\test\文件夹1', 'C:\Users\琪亚娜\Desktop\test\文件夹2', 'C:\Users\琪亚娜\Desktop\test\文件夹3' ]

Vous pouvez voir que les caractères chinois dans le nom du fichier ou du répertoire sont convertis en caractères tronqués , ce qui est très inquiétant.

2. Analyse des causes

Les caractères tronqués sont généralement causés par un encodage de caractères incohérent. Dans les systèmes Windows, les caractères chinois utilisent généralement le codage gbk, tandis que Node.js utilise le codage utf-8 par défaut lors du traitement des chemins, ce qui entraîne une analyse incorrecte des caractères chinois dans les noms de fichiers ou de répertoires.

3. Solution

1. Utilisez la bibliothèque iconv-lite

iconv-lite est une bibliothèque de conversion d'encodage de caractères très populaire, nous pouvons utiliser pour résoudre le problème des chemins chinois tronqués.

Tout d'abord, vous devez utiliser npm pour installer iconv-lite :

npm install iconv-lite --save

Ensuite, lorsque vous utilisez le module fs pour lire ou écrire des fichiers, modifiez le chemin du fichier via iconv -lite module Transcodage. Par exemple :

const iconv = require('iconv-lite');
const fs = require('fs');

let path = 'C:\Users\妲己\Desktop\test';

// 将路径从gbk编码转换为utf-8编码
path = iconv.decode(Buffer.from(path), 'gbk');

// 读取文件
fs.readFileSync(path);

2. Utilisez la bibliothèque node-chardet

node-chardet est une autre bibliothèque de détection de codage de caractères couramment utilisée, qui peut également être utilisée lors du traitement des chemins chinois.

Tout d'abord, vous devez utiliser npm pour installer node-chardet :

npm install chardet --save

Ensuite, lorsque vous utilisez le module fs pour lire ou écrire des fichiers, détectez le chemin du fichier via le nœud -chardet encodage du module, puis convertissez-le en encodage utf-8. Par exemple :

const chardet = require('chardet');
const fs = require('fs');

let path = 'C:\Users\妲己\Desktop\test';

// 检测路径编码
const encoding = chardet.detectFileSync(path);

// 将路径从检测出的编码转换为utf-8编码
path = iconv.decode(Buffer.from(path), encoding, 'utf-8');

// 读取文件
fs.readFileSync(path);

3. Utilisez StringDecoder

Node.js possède une classe StringDecoder intégrée qui peut décoder les octets de l'objet Buffer en caractères. Vous pouvez utiliser cette classe pour résoudre le problème des chemins chinois tronqués.

Par exemple :

const { StringDecoder } = require('string_decoder');
const fs = require('fs');

let path = 'C:\Users\妲己\Desktop\test';

// 读取文件
const content = fs.readFileSync(Buffer.from(path));

// 将Buffer对象转换为字符
const decoder = new StringDecoder();
const pathStr = decoder.write(content);

4. Modifier les paramètres d'encodage du système Windows

Sous le système Windows, l'encodage gbk est généralement utilisé par défaut, on peut également modifiez-le Paramètres d'encodage, changez-le en encodage UTF-8. La méthode spécifique est la suivante :

Ouvrir "Panneau de configuration"->"Horloge et région"->"Région"->"Gestion"->"Modifier les paramètres régionaux du système" et modifier " Langue "Pour les programmes non Unicode" est défini sur "Chinois (simplifié, Chine)", puis redémarrez l'ordinateur.

5. Résumé

Cet article présente les problèmes tronqués qui peuvent survenir lors de l'utilisation de Node.js pour traiter les chemins chinois, et comment utiliser la bibliothèque iconv-lite, node- chardet, classe StringDecoder ou modifiez les paramètres d'encodage du système Windows pour résoudre ce problème. Dans le développement réel, nous pouvons adopter différentes solutions en fonction de situations spécifiques, afin que Node.js puisse gérer les chemins chinois en douceur et offrir une meilleure expérience pour le développement d'applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn