নোড.জেএস সমর্থন করে এমন এনকোডিংগুলির তালিকা


136

আমাকে এমন একটি ফাইল পড়তে হবে যা আইএসও -8859-1 (এটিকে ল্যাটিন 1ও বলা হয়) দিয়ে এনকোড করা আছে, এরকম কিছু:

var file_contents = fs.readFileSync("test_data.html", "latin1");

তবে নোড "লাতিন 1" বা "আইএসও -8859-1" বৈধ এনকোডিং না হওয়ার বিষয়ে অভিযোগ করেছেন ("ত্রুটি: অজানা এনকোডিং")।

কোন এনকোডিংগুলি readFileSyncগ্রহণ করে?


উত্স ফাইলটি utf8 তে রূপান্তর করার কোনও বিকল্প কিনা তা আমি জানি না। যদি তা হয় তবে এখানে একটি লিঙ্ক দেওয়া আছে। superuser.com/questions/762473/ansi-to-utf-8-in-notepad
— mathheadinclouds

উত্তর:


223

এনকোডিং তালিকা যে নোড সমর্থন নেটিভ বরং খুব বেশী নেই

  • ASCII
  • করুন Base64-
  • সম্মোহন
  • ucs2 / ucs2 / utf16le / utf16le
  • UTF8 / UTF8
  • বাইনারি / ল্যাটিন 1 (আইএসও 8859-1, লাতিন 1 কেবল নোড 6.4.0+ এ)

আপনি যদি .4.৪.০ এর চেয়ে পুরানো সংস্করণ ব্যবহার করে থাকেন বা অ-ইউনিকোড এনকোডিংগুলি ব্যবহার করতে না চান তবে আপনি স্ট্রিংটি পুনরায় পুনর্নির্মাণ করতে পারেন:

ফাইলগুলি পুনঃনির্মাণ করতে আইকনভিউ-লাইট ব্যবহার করুন :

var iconvlite = require('iconv-lite');
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    return iconvlite.decode(content, encoding);
}

বিকল্পভাবে, আইকনভি ব্যবহার করুন :

var Iconv = require('iconv').Iconv;
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    var iconv = new Iconv(encoding, 'UTF-8');
    var buffer = iconv.convert(content);
    return buffer.toString('utf8');
}

1
যারা আইকনওয়ালা সংকলন করতে সমস্যা করছে তাদের জন্য আমি আইকনভিউ-লাইটের প্রস্তাব দিই । এটি সংকলনের প্রয়োজন হয় না এবং দেব অনুসারে আইকনভিভের চেয়ে দ্রুত এবং এটি গ্রান্ট, নোডমিলার, ইয়োমন, ... এর মতো জনপ্রিয় সরঞ্জামগুলি দ্বারা ব্যবহৃত হয় ...
— তেলামাকো

ইলেক্ট্রন ইনস্টল lib ব্যবহার এবং উত্পাদন নির্ভরতা হিসাবে সংরক্ষণ করতে:npm install iconv-lite --save
— ডেনিসকলোডিন

এখনকার জন্য, latin1এছাড়াও ওরফে হিসাবে অন্তর্ভুক্ত করা হয়ascii
— thybzi

2
উত্তরে আপনি যা বলেছিলেন - ISO-8859-1 (ওরফে latin1) সমর্থিত নয় - নোড ভি 8.1.4-র ক্ষেত্রে নয়। দেখুন এই ডকুমেন্টেশন পৃষ্ঠা যার মধ্যে রয়েছে বাফার দ্বারা সমর্থিত সকল এনকোডিং দেখতে latin1(যার ওরফে হয় binary)।
— এনবিখোপ

1
@ পানুলজিক আপনি যখন বাইট স্ট্রিং থেকে একটি চরিত্রের স্ট্রিংয়ে রূপান্তর করেন, আপনার কিছু এনকোডিং দরকার । latin1বিপরীতে পরিবর্তনযোগ্য - এমনকি আপনার ইনপুটটি এমপি 4 ভিডিও ফাইল হলেও স্ট্রিংটি বৈধ হতে চলেছে (অর্থহীন হলেও), এবং বাইটে ফিরে রূপান্তর করলে আসল বাইটস আসবে। বাইনারি ডেটার জন্য একটি Buffer/ Uint8Arrayব্যবহার করুন।
— ফিহাগ

0

উপরের সমাধানটি যদি আপনার জন্য কাজ না করে তবে নীচের খাঁটি নোডেজ কোড দিয়ে একই ফলাফল পাওয়া সম্ভব। উপরেরটি আমার পক্ষে কাজ করে না এবং ওএসএক্সে 'এনপিএম ইনস্টল আইকনভি' চালানোর সময় সংকলনের ব্যতিক্রম ঘটায়:

npm install iconv

npm WARN package.json portalServer@0.1.0 No README.md file found!
npm http GET https://registry.npmjs.org/iconv
npm http 200 https://registry.npmjs.org/iconv
npm http GET https://registry.npmjs.org/iconv/-/iconv-2.0.4.tgz
npm http 200 https://registry.npmjs.org/iconv/-/iconv-2.0.4.tgz

> iconv@2.0.4 install /Users/markboyd/git/portal/app/node_modules/iconv
> node-gyp rebuild

gyp http GET http://nodejs.org/dist/v0.10.1/node-v0.10.1.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.1/node-v0.10.1.tar.gz
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information.

fs.readFileSync () কোনও এনকোডিং নির্দিষ্ট না করা হলে একটি বাফারকে ফেরত দেয়। এবং বাফারের একটি টসস্ট্রিং () পদ্ধতি রয়েছে যা ইউটিএফ 8 এ রূপান্তর করবে যদি কোনও এনকোডিং নির্দিষ্ট না করা হয় তবে আপনাকে ফাইলটির সামগ্রী সরবরাহ করতে পারবেন না। নোডেজ ডকুমেন্টেশন দেখুন। এটি আমার পক্ষে কাজ করেছে।


1
সমস্যাটি হ'ল বাফার ধরে নিয়েছে যে ডেটা ইতিমধ্যে utf8 এ নির্দিষ্ট না থাকলে, এবং লাতিন 1 থেকে utf8 তে রূপান্তর করার কোনও চেষ্টা করবে না।
— ব্লুজমুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.