Цитата: 
	
 Это конечно типа legacy, но пока не deprecated.) Жаль только никакого хитрого метода заюзать это в коде я лично не придумал.  | 
	
		
 Цитата: 
	
 Разрешенные в TextDecoder (кроме iso-2022-cn, iso-2022-cn-ext) тут https://developer.mozilla.org/en-US/..._API/Encodings Для простых кодировок (которые не китайско-японские и ограничиваются 256 кодами) можно прикрутить что то типа такого 
<script>
class TextEncoderExt {
	constructor (utfLabel="utf-8", options={fatal:false}) {
// options.fatal  - true - выбрасывать исключение при ошибках кодирования.
// options.code - числовой код, который подставляется для несуществующих символов.
// если не указан, несуществующий символ пропускается.
		if (utfLabel.toLowerCase().indexOf('utf')>=0) return new TextEncoder('utf-8', options)
		this.codetable = {};
		this.opt = options;
		const arb = new Uint8Array(256)
		for (let i = 0; i<256; i++) arb[i]=i; 
		const codestr = new TextDecoder(utfLabel).decode(arb);
		for (let i=0; i<256; i++) this.codetable[codestr.codePointAt(i)] = i;
	}
	
	encode (str) {
		const l = str.length;
		const buf = new Uint8Array(l);
		let j = 0;
		for (let i = 0; i<l; i++) {
			let v = this.codetable[str.codePointAt(i)];
			if (v === undefined) {
				if (this.opt?.fatal) throw new Error('EncodeExt error');
				if (typeof this.opt?.code == 'number') v=this.opt.code & 255;
			}
			if (v !== undefined) buf[j++] = v;
		}
		return (j<l)? buf.slice(0,j) : buf;
	}
}
const strin1="Это строка на кирилице. В “win-1251” и обратно …"
const buf1 = new TextEncoderExt('CP1251').encode(strin1)
const strout1= new TextDecoder('CP1251').decode(buf1)
console.log (strin1)
console.log (strout1)
const strin2="Это строка на кирилице. В “CP866” и обратно …"
const buf2 = new TextEncoderExt('866', {code:240}).encode(strin2) // Ё вместо несуществующих символов
const strout2= new TextDecoder('866').decode(buf2)
console.log (strin2)
console.log (strout2)
const strin3="Это строка на кирилице. В “utf-8” и обратно …"
const buf3 = new TextEncoderExt('utf-8').encode(strin3)
const strout3= new TextDecoder('utf-8').decode(buf3)
console.log (strin3)
console.log (strout3)
</script>
 | 
	
		
 voraa, 
	кстати, правильно ли я понял, что CP437 нужно только в ручную выписывать?  | 
	
		
 Цитата: 
	
 Такой TextDecoder('cp437') не знает. Слетает с ошибкой.  | 
	
		
 voraa, 
	самое интересное, что 437 это альма-матер этих ibm кодировок, и что ее путают с другими, хотя они уже от нее образовались...  | 
| Часовой пояс GMT +3, время: 03:31. |