6 Star 0 Fork 4

src-openEuler/nodejs-iconv

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
nodejs-iconv-glibc.patch 3.03 KB
一键复制 编辑 原始数据 按行查看 历史
wangxiao65 提交于 2020-08-20 19:47 . package init
commit a690ba5b71acb62cc3949a78eea0c73caae69cd8
Author: Tom Hughes <tom@compton.nu>
Date: Tue Nov 24 14:13:26 2015 +0000
Workaround differences in glibc iconv
diff --git a/lib/iconv.js b/lib/iconv.js
index 84a2d75..97b4707 100644
--- a/lib/iconv.js
+++ b/lib/iconv.js
@@ -54,13 +54,15 @@ function Iconv(fromEncoding, toEncoding)
toEncoding + ' is not supported.');
}
+ var ignore = toEncoding.match(/\/\/IGNORE(\/|$)/i);
+
var context_ = { trailer: null };
this.convert = function(input, encoding) {
if (typeof(input) === 'string') {
input = Buffer.from(input, encoding || 'utf8');
}
- return convert(conv, input, null);
+ return convert(conv, ignore, input, null);
};
this.write = function(input, encoding) {
@@ -68,7 +70,7 @@ function Iconv(fromEncoding, toEncoding)
input = Buffer.from(input, encoding || 'utf8');
}
try {
- var buf = convert(conv, input, context_);
+ var buf = convert(conv, ignore, input, context_);
}
catch (e) {
this.emit('error', e);
@@ -97,7 +99,7 @@ function fixEncoding(encoding)
return /^utf[^-]/i.test(encoding) ? 'utf-' + encoding.substr(3) : encoding;
}
-function convert(conv, input, context) {
+function convert(conv, ignore, input, context) {
if (!Buffer.isBuffer(input) && input !== FLUSH) {
throw new Error('Bad argument.'); // Not a buffer or a string.
}
@@ -141,7 +143,7 @@ function convert(conv, input, context) {
input_size -= input_consumed;
output_start += output_consumed;
output_size -= output_consumed;
- if (errno) {
+ if (errno && !(errno === EILSEQ && ignore)) {
if (errno === E2BIG) {
output_size += output.length;
var newbuf = Buffer.alloc(output.length * 2);
diff --git a/test/test-basic.js b/test/test-basic.js
index 7cee646..19e5e89 100644
--- a/test/test-basic.js
+++ b/test/test-basic.js
@@ -130,22 +130,22 @@ iconv = new Iconv('utf-8', 'ascii//ignore');
assert.equal(iconv.convert('ça va').toString(), 'a va');
iconv = new Iconv('utf-8', 'ascii//translit');
-assert.equal(iconv.convert('ça va').toString(), 'ca va');
+assert.equal(iconv.convert('ça va').toString(), '?a va');
iconv = new Iconv('utf-8', 'ascii//translit');
-assert.throws(function() { iconv.convert('ça va が'); }); // untranslatable
+assert.equal(iconv.convert('ça va が').toString(), '?a va ?');
iconv = new Iconv('utf-8', 'ascii//translit//ignore');
-assert.equal(iconv.convert('ça va が').toString(), 'ca va ');
+assert.equal(iconv.convert('ça va が').toString(), '?a va ?');
iconv = Iconv('utf-8', 'iso-8859-1');
assert.equal(iconv.convert('b2s=', 'base64').toString(), 'ok');
var aixEncodings =
- 'CP856 CP922 CP943 CP1046 CP1124 CP1129 CP1161 CP1162 CP1163';
+ 'CP856 CP922 CP1046 CP1124 CP1129 CP1161 CP1162 CP1163';
var dosEncodings =
- 'CP437 CP737 CP775 CP852 CP853 CP855 CP857 CP858 CP860 CP861 ' +
+ 'CP437 CP737 CP775 CP852 CP855 CP857 CP860 CP861 ' +
'CP863 CP864 CP865 CP869 CP1125';
// Check that AIX and DOS encodings are available.
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/nodejs-iconv.git
git@gitee.com:src-openeuler/nodejs-iconv.git
src-openeuler
nodejs-iconv
nodejs-iconv
master

搜索帮助