charset.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. (function() {
  2. var Buffer, Iconv, Negotiator, availableCharsets, http, iconv, key, message, messages, server, val;
  3. Negotiator = require('../lib/negotiator').Negotiator;
  4. http = require('http');
  5. Buffer = require('buffer').Buffer;
  6. Iconv = require('iconv').Iconv;
  7. iconv = new Iconv('UTF-8', 'ISO-8859-1');
  8. message = "ë";
  9. messages = {
  10. 'utf-8': message,
  11. 'iso-8859-1': iconv.convert(new Buffer(message))
  12. };
  13. availableCharsets = (function() {
  14. var _results;
  15. _results = [];
  16. for (key in messages) {
  17. val = messages[key];
  18. _results.push(key);
  19. }
  20. return _results;
  21. })();
  22. server = http.createServer(function(req, res) {
  23. var charset, negotiator;
  24. negotiator = new Negotiator(req);
  25. console.log("Accept-Charset: " + req.headers['accept-charset']);
  26. console.log("Preferred: " + (negotiator.preferredCharsets()));
  27. console.log("Possible: " + (negotiator.preferredCharsets(availableCharsets)));
  28. charset = negotiator.preferredCharset(availableCharsets);
  29. console.log("Selected: " + charset);
  30. if (charset) {
  31. res.writeHead(200, {
  32. 'Content-Type': "text/html; charset=" + charset
  33. });
  34. return res.end(messages[charset]);
  35. } else {
  36. res.writeHead(406);
  37. return res.end();
  38. }
  39. });
  40. server.listen(8080);
  41. }).call(this);