Giter VIP home page Giter VIP logo

quoted-printable's Introduction

quoted-printable Build status Code coverage status Dependency status

quoted-printable is a character encoding–agnostic JavaScript implementation of the Quoted-Printable content transfer encoding as defined by RFC 2045. It can be used to encode plaintext to its Quoted-Printable encoding, or the other way around (i.e. decoding). Here’s an online demo using the UTF-8 character encoding.

Installation

Via npm:

npm install quoted-printable

Via Bower:

bower install quoted-printable

Via Component:

component install mathiasbynens/quoted-printable

In a browser:

<script src="quoted-printable.js"></script>

In Node.js, io.js, Narwhal, and RingoJS:

var quotedPrintable = require('quoted-printable');

In Rhino:

load('quoted-printable.js');

Using an AMD loader like RequireJS:

require(
  {
    'paths': {
      'quoted-printable': 'path/to/quoted-printable'
    }
  },
  ['quoted-printable'],
  function(quotedPrintable) {
    console.log(quotedPrintable);
  }
);

API

quotedPrintable.version

A string representing the semantic version number.

quotedPrintable.encode(input)

This function takes an encoded byte string (the input parameter) and Quoted-Printable-encodes it. Each item in the input string represents an octet as per the desired character encoding. Here’s an example that uses UTF-8:

var utf8 = require('utf8');

quotedPrintable.encode(utf8.encode('foo=bar'));
// → 'foo=3Dbar'

quotedPrintable.encode(utf8.encode('Iñtërnâtiônàlizætiøn☃💩'));
// → 'I=C3=B1t=C3=ABrn=C3=A2ti=C3=B4n=C3=A0liz=C3=A6ti=C3=B8n=E2=98=83=F0=9F=92=\r\n=A9'

quotedPrintable.decode(text)

This function takes a string of text (the text parameter) and Quoted-Printable-decodes it. The return value is a ‘byte string’, i.e. a string of which each item represents an octet as per the character encoding that’s being used. Here’s an example that uses UTF-8:

var utf8 = require('utf8');

utf8.decode(quotedPrintable.decode('foo=3Dbar'));
// → 'foo=bar'

utf8.decode(quotedPrintable.decode('I=C3=B1t=C3=ABrn=C3=A2ti=C3=B4n=C3=A0liz=C3=A6ti=C3=B8n=E2=98=83=F0=9F=92=\r\n=A9'));
// → 'Iñtërnâtiônàlizætiøn☃💩'

Using the quoted-printable binary

To use the quoted-printable binary in your shell, simply install quoted-printable globally using npm:

npm install -g quoted-printable

After that, you’ll be able to use quoted-printable on the command line. Note that while the quoted-printable library itself is character encoding–agnostic, the command-line tool applies the UTF-8 character encoding on all input.

$ quoted-printable --encode 'foo=bar'
foo=3Dbar

$ quoted-printable --decode 'foo=3Dbar'
foo=bar

Read a local text file, Quoted-Printable-encode it, and save the result to a new file:

$ quoted-printable --encode < foo.txt > foo-quoted-printable.txt

Or do the same with an online text file:

$ curl -sL 'https://mths.be/brh' | quoted-printable --encode > quoted-printable.txt

Or, the opposite — read a local file containing a Quoted-Printable-encoded message, decode it back to plain text, and save the result to a new file:

$ quoted-printable --decode < quoted-printable.txt > original.txt

See quoted-printable --help for the full list of options.

Support

quoted-printable is designed to work in at least Node.js v0.10.0, io.js v1.0.0, Narwhal 0.3.2, RingoJS 0.8-0.11, PhantomJS 1.9.0, Rhino 1.7RC4, as well as old and modern versions of Chrome, Firefox, Safari, Opera, and Internet Explorer.

Unit tests & code coverage

After cloning this repository, run npm install to install the dependencies needed for development and testing. You may want to install Istanbul globally using npm install istanbul -g.

Once that’s done, you can run the unit tests in Node using npm test or node tests/tests.js. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use grunt test.

To generate the code coverage report, use grunt cover.

Author

twitter/mathias
Mathias Bynens

License

quoted-printable is available under the MIT license.

quoted-printable's People

Contributors

mathiasbynens avatar sindresorhus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

quoted-printable's Issues

Error: `Invalid continuation byte` with Russian (windows-1251 charset) text

Hi, I'm getting Invalid continuation byte error when I tried to decode some Russian text.

$ quoted-printable --decode '=CA=EE=EB=EB=E5=E3=E8, =EF=F0=E8=E2=E5=F2!'
Invalid continuation byte

Error: failed to decode.
If you think this is a bug in quoted-printable, please report it:
https://github.com/mathiasbynens/quoted-printable/issues/new

Stack trace using quoted-printable@1.0.1:

Error: Invalid continuation byte
    at readContinuationByte (~/test/node_modules/utf8/utf8.js:131:9)
    at decodeSymbol (~/test/node_modules/utf8/utf8.js:160:12)
    at Object.utf8decode [as decode] (~/test/node_modules/utf8/utf8.js:206:17)
    at ~/test/node_modules/quoted-printable/bin/quoted-printable:64:20
    at Array.forEach (native)
    at main (~/test/node_modules/quoted-printable/bin/quoted-printable:43:11)
    at ~/test/node_modules/quoted-printable/bin/quoted-printable:90:3
    at Object.<anonymous> (~/test/node_modules/quoted-printable/bin/quoted-printable:116:2)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)

The expected decoded text should be Коллеги, привет! (translates to "Colleagues, hello!").
I was able to decode it using http://www.webatic.com/run/convert/qp.php

screen shot 2017-04-18 at 11 05 54 am

Full example:

=CA=EE=EB=EB=E5=E3=E8, =EF=F0=E8=E2=E5=F2!
=CF=F0=EE=F8=F3 =EE=E1=EE=F0=F3=E4=EE=E2=E0=F2=FC =EC=EE=E5 =F0=E0=E1=EE=F7=
=E5=E5 =EC=E5=F1=F2=EE =C8=C1=CF.
=D1=EF=E0=F1=E8=E1=EE.

Stripping out new line characters.

Hi,
It seems to be stripping out new line characters. Is this by design?

var in = 'top\nbottom';
var out = require('quoted-printable').decode(in);
console.log(out); //gives 'topbottom'

Update the demo site

Hello

I tried your demo with a simple multiline string to decode, and I was surprised to see the result was in one line only.
I investigated and saw the demo uses an older version of the library, with /=?(?:\r\n?|\n)/g in one regexp. The =? is the culprit, of course.
So I suggest you update this demo to avoid people to think it is bugged.

Side note: I suggest to put a link to your utf8 library in your readme, since you use it in the examples and the demo.

apostrophes are decoded as ’

apostrophes are being decoded as � ( ' -> �)

it's very possible I'm using the decode function incorrectly.

quotedPrintable.decode(emlFileAsString);

the original encoding was UTF-8 (if that matters, there's no argument for encoding in the decode function afaik).

great script, would love to learn how to use it properly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.