Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/narirou/jconv
Pure-JavaScript converter for Japanese character encodings.
https://github.com/narirou/jconv
encoding euc-jp iconv japanese jis shift-jis
Last synced: about 5 hours ago
JSON representation
Pure-JavaScript converter for Japanese character encodings.
- Host: GitHub
- URL: https://github.com/narirou/jconv
- Owner: narirou
- Created: 2013-11-17T19:22:03.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-07-12T04:21:29.000Z (over 9 years ago)
- Last Synced: 2024-10-30T06:07:07.446Z (20 days ago)
- Topics: encoding, euc-jp, iconv, japanese, jis, shift-jis
- Language: JavaScript
- Homepage:
- Size: 1.59 MB
- Stars: 99
- Watchers: 6
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
jconv
=====> Pure JavaScript Iconv for Japanese encodings.
[![Build Status][travis-image]][travis-url]
[![Npm Modules][npm-image]][npm-url]
[![MIT Licensed][license-image]][license-url][travis-image]: https://img.shields.io/travis/narirou/jconv.svg?style=flat-square
[travis-url]: https://travis-ci.org/narirou/jconv
[npm-image]: http://img.shields.io/npm/v/jconv.svg?style=flat-square
[npm-url]: https://www.npmjs.org/package/jconv
[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square
[license-url]: http://opensource.org/licenses/MIT* This module supports the encodings commonly used in the Japanese Language:
*Shift_JIS(CP932), ISO-2022-JP(-1), EUC-JP, UTF8, UNICODE(UCS2)* conversion.
* Pure Javascript, no need to compile.
* Much faster than [node-iconv](https://github.com/bnoordhuis/node-iconv).[[Japanese 日本語]](https://github.com/narirou/jconv/blob/master/READMEja.md)
Installation
------------```bash
$ npm install jconv
```Usage
-----For example simply convert from **EUC-JP** to **Shift_JIS**:
```javascript
var jconv = require( 'jconv' );var SJISBuffer = jconv.convert( EUCJPBuffer, 'EUCJP', 'SJIS' );
```Also available **iconv-lite** syntax:
```javascript
var str = jconv.decode( buffer, fromEncoding );var buf = jconv.encode( 'string', toEncoding );
```API
---* **jconv( input, fromEncoding, toEncoding )**
* **jconv.convert( input, fromEncoding, toEncoding )**
* `input` {Buffer} or {String}
* `fromEncoding`, `toEncoding` {String}:
*Shift_JIS(SJIS), ISO-2022-JP(JIS), EUCJP, UTF8, UNICODE(UCS2, UTF16LE)* are available.
* `return` {Buffer}* **jconv.decode( inputBuffer, fromEncoding )**
* `return` {String}* **jconv.encode( inputString, toEncoding )**
* `return` {Buffer}* **jconv.encodingExists( encodingName )**
* `return` {Boolean}Performance
-----------Comparison with [email protected] by converting [Japanese text](http://www.aozora.gr.jp/cards/000148/files/773_14560.html)
using [Benchmark.js](https://github.com/bestiejs/benchmark.js).
Environment is *Windows7, core i5 2405-S, mem8G, Node 0.10.22*.
(Please check on your hardware.)
`Gray`: iconv, `Blue`: jconv (higher is better)![jconv - encoding speed test chart](https://raw.github.com/narirou/jconv/master/test/chart/speedLog.png)
[[latest log]](https://github.com/narirou/jconv/blob/master/test/chart/speedLog.txt)Encodings
---------* Supported: Shift_JIS(CP932), ISO-2022-JP(-1), EUC-JP, UTF8, UNICODE(UCS2).
* Supported Windows Dependent Characters <-> JIS Conversion.
[(problem details)](http://support.microsoft.com/default.aspx?scid=kb;ja;JP170559)* "JIS X 0208", "JIS X 0212" and "CP932" have the Unicode Mapping Table Differences,
so the specific characters ( ~¢£∥ etc... ) cannot be round-trip converted by default.
This module corrects this difference as much as possible when converting.
[(problem details)](http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html)Development
-----------* Clone Repository
```
git clone https://github.com/narirou/jconv.git
cd jconv
npm install
```* Generate Tables
```
# generates the unicode mapping table module in "tables" folder.
node generators/generate-source
node generators/generate
```* Test
```
grunt test
```* Speed Test
```
# First, minify the script by closure-compiler.
grunt minify
```
```
node test/speed
# This results are visualized by chart.js.
# Plese open "chart/index.html".
```Based on
--------* [iconv-lite](https://github.com/ashtuchkin/iconv-lite) by ashtuchkin.
* [Encoding.js](https://github.com/polygonplanet/Unzipper.js) by polygonplanet.
* [iconv-js](https://github.com/Hikaru02/iconv-js) by Hikaru02.
* [node-iconv](https://github.com/bnoordhuis/node-iconv) by bnoordhuis.
* [libiconv-1.9.1-ja-patch Description](http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.9.1-patch.html) by 森山 将之.Thank you so much!
Note
----Pull requests are welcome.
Todo
----* Streaming API support
* Support more encodings and languages.
* Cleanup the code and more speed.