ä½¿ç¨ NodeJS ç¼ååç«¯å·¥å ·æ¶ï¼æä½å¾æå¤çæ¯ææ¬æ件ï¼å æ¤ä¹å°±æ¶åå°äºæ件ç¼ç çå¤çé®é¢ãæ们常ç¨çææ¬ç¼ç æ UTF8 å GBK 两ç§ï¼å¹¶ä¸ UTF8 æ件è¿å¯è½å¸¦æ BOMãå¨è¯»åä¸åç¼ç çææ¬æ件æ¶ï¼éè¦å°æ件å 容转æ¢ä¸º JS 使ç¨ç UTF8 ç¼ç å符串åæè½æ£å¸¸å¤çã
1ãBOM ç移é¤
BOM ç¨äºæ è®°ä¸ä¸ªææ¬æä»¶ä½¿ç¨ Unicode ç¼ç ï¼å
¶æ¬èº«æ¯ä¸ä¸ª Unicode å符ï¼"uFEFF"ï¼ï¼ä½äºææ¬æ件头é¨ãå¨ä¸åç Unicode ç¼ç ä¸ï¼BOM å符对åºçäºè¿å¶åèå¦ä¸ï¼
å æ¤ï¼æ们å¯ä»¥æ ¹æ®ææ¬æ件头å 个åèçäºå¥æ¥å¤ææ件æ¯å¦å å« BOMï¼ä»¥å使ç¨åªç§ Unicode ç¼ç ãä½æ¯ï¼BOM å符è½ç¶èµ·å°äºæ è®°æ件ç¼ç çä½ç¨ï¼å ¶æ¬èº«å´ä¸å±äºæ件å 容çä¸é¨åï¼å¦æ读åææ¬æ件æ¶ä¸å»æ BOMï¼å¨æäºä½¿ç¨åºæ¯ä¸å°±ä¼æé®é¢ãä¾å¦æ们æå 个 JS æ件å并æä¸ä¸ªæ件åï¼å¦ææ件ä¸é´å«æ BOM å符ï¼å°±ä¼å¯¼è´æµè§å¨ JS è¯æ³é误ãå æ¤ï¼ä½¿ç¨ NodeJS 读åææ¬æ件æ¶ï¼ä¸è¬éè¦å»æ BOMãä¾å¦ï¼ä»¥ä¸ä»£ç å®ç°äºè¯å«åå»é¤ UTF8 BOM çåè½.
2ãGBK 转 UTF8
NodeJS æ¯æå¨è¯»åææ¬æ件æ¶ï¼æè
å¨ Buffer 转æ¢ä¸ºå符串æ¶æå®ææ¬ç¼ç ï¼ä½éæ¾çæ¯ï¼GBK ç¼ç ä¸å¨NodeJSèªèº«æ¯æèå´å
ãå æ¤ï¼ä¸è¬æ们åå© iconv-lite è¿ä¸ªä¸æ¹å
æ¥è½¬æ¢ç¼ç ãä½¿ç¨ NPM ä¸è½½è¯¥å
åï¼æ们å¯ä»¥æä¸è¾¹æ¹å¼ç¼åä¸ä¸ªè¯»å GBK ææ¬æ件çå½æ°ã
3ãååèç¼ç
ææ¶åï¼æ们æ æ³é¢ç¥éè¦è¯»åçæ件éç¨åªç§ç¼ç ï¼å æ¤ä¹å°±æ æ³æå®æ£ç¡®çç¼ç ãæ¯å¦æ们è¦å¤ççæäº CSS æ件ä¸ï¼æçç¨ GBK ç¼ç ï¼æçç¨ UTF8 ç¼ç ãè½ç¶å¯ä»¥ä¸å®ç¨åº¦å¯ä»¥æ ¹æ®æ件çåèå
容çæµåºææ¬ç¼ç ï¼ä½è¿éè¦ä»ç»çæ¯æäºå±éï¼ä½æ¯è¦ç®åå¾å¤çä¸ç§ææ¯ã
é¦å æ们ç¥éï¼å¦æä¸ä¸ªææ¬æ件åªå å«è±æå符ï¼æ¯å¦ Hello Worldï¼é£æ è®ºç¨ GBK ç¼ç ææ¯ UTF8 ç¼ç 读åè¿ä¸ªæ件é½æ¯æ²¡é®é¢çãè¿æ¯å 为å¨è¿äºç¼ç ä¸ï¼ASCII0~128 èå´å å符é½ä½¿ç¨ç¸åçååèç¼ç ã
åè¿æ¥è®²ï¼å³ä½¿ä¸ä¸ªææ¬æ件ä¸æä¸æçå符ï¼å¦ææ们éè¦å¤ççåç¬¦ä» å¨ ASCII0~128 èå´å ï¼æ¯å¦é¤äºæ³¨éåå符串以å¤çJS代ç ï¼æ们就å¯ä»¥ç»ä¸ä½¿ç¨ååèç¼ç æ¥è¯»åæ件ï¼ä¸ç¨å ³å¿æ件çå®é ç¼ç æ¯ GBK è¿æ¯ UTF8ã