2016-07-19 3 views
1

fs.writeFileSync 인코딩 기본값은 입니다. UTF 8 인코딩을 big5로 설정할 수 없습니다. 설명서에 인코딩 지원이 언급되어 있지 않습니다. 이 기능이 BIG5를 지원하지 않으면 어떻게해야합니까?node.js fs.writeFileSync() 인코딩을 big5로 설정하는 방법은 무엇입니까?

var fs = require('fs'); 
var FilePath='./text.txt'; 
var Str='this is a test!'; 
var encode='utf8'; 
fs.writeFileSync(FilePath, Str, encode); 

encoding (var encode = 'big5';) BIG5를 설정하면 서버에서 오류가 발생합니다.

+0

['iconv-lite'] (https://github.com/ashtuchkin/iconv-lite)와 같은 것을 사용하십시오. – robertklep

답변

2

standard with Node Core이 아닌 인코딩을 사용하려면. iconv-lite을 사용할 수 있습니다.

big5, here is the full list of encodings 등의 추가 인코딩을 지원합니다.

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

var Str = iconv.encode('This is a test', 'big5'); 

var readStream = new stream.PassThrough(); 
var writeStream = fs.createWriteStream('./text.txt'); 

readStream.once('error', (err) => { console.log(err); });  
readStream.once('end',() => { console.log('File Written'); }); 

readStream.end(Str); // write data to stream  
readStream.pipe(writeStream); // pipe data to file 
+0

그냥 두 가지 이벤트 핸들러가'readStream.end()'보다 더 잘 작동 할까? – Zlatko

+0

@Zlatko'readStream.end()'는 스트림에 데이터를 채우는 것입니다. 'read'.end()'전에는'error' 리스너가 더 좋을 수도 있지만'end' 이벤트는 스트림이 완전히 비워 졌을 때만 출력되므로'readStream.end()'. 두 청취자를'end()'전에 깔끔하게 움직 였지만'error' 리스너 만이 그 앞에 있어야합니다. – peteb

+0

작동 중! 정말 놀라워! 답변 주셔서 감사합니다! 왜 이렇게 쓰는가? readStream.pipe (writeStream); 마지막 줄에? –

관련 문제