diff --git a/lib/defs.js b/lib/defs.js index f920866..71d8263 100644 --- a/lib/defs.js +++ b/lib/defs.js @@ -506,11 +506,10 @@ filters.message = { return value; } var message = typeof value === 'string' ? value : value.message; - if (typeof message === 'string') { - var encoding = encodings.detect(message); + if (typeof message === 'string' && message) { + var encoded = false; if (value.udh) { var udhList = udhCoder.getUdh(value.udh); - var encoded = false; for (var i = 0; i < udhList.length; i++) { var udh = udhList[i]; if (udh[0] === 0x24 || udh[0] === 0x25) { @@ -520,15 +519,19 @@ filters.message = { break; } } - if (!encoded) { - if (message && this.data_coding === null) { - this.data_coding = consts.ENCODING[encoding]; - } - message = encodings[encoding].encode(message); - } - } else { - if (message && this.data_coding === null) { + } + if (!encoded) { + var encoding = encodings.default; + if (this.data_coding === null) { + encoding = encodings.detect(message); this.data_coding = consts.ENCODING[encoding]; + } else if (this.data_coding !== consts.ENCODING.SMSC_DEFAULT) { + for (var key in consts.ENCODING) { + if (consts.ENCODING[key] === this.data_coding) { + encoding = key; + break; + } + } } message = encodings[encoding].encode(message); }