diff --git a/src/vs/base/node/encoding.ts b/src/vs/base/node/encoding.ts index c45032131704609c0cfa04538a6b39c9dfa54110..c4cd563ef8f3ae855b458f410f2dcaf2b3a14b1f 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/base/node/encoding.ts @@ -210,6 +210,17 @@ async function guessEncodingByBuffer(buffer: Buffer): Promise { return null; } + // Ignore 'ascii' as guessed encoding because that + // is almost never what we want, rather fallback + // to the configured encoding then. Otherwise, + // opening a ascii-only file with auto guessing + // enabled will put the file into 'ascii' mode + // and thus typing any special characters is + // not possible anymore. + if (guessed.encoding.toLowerCase() === 'ascii') { + return null; + } + return toIconvLiteEncoding(guessed.encoding); } diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/base/test/node/encoding/encoding.test.ts index d8730a52b366ac915e3dfa4767ad1134b7ef96d7..eef17fbddb61a26767f1f52706425538eadafbe9 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/base/test/node/encoding/encoding.test.ts @@ -200,7 +200,7 @@ suite('Encoding', () => { const file = getPathFromAmdModule(require, './fixtures/some_ansi.css'); const buffer = await readExactlyByFile(file, 512 * 8); const mimes = await encoding.detectEncodingFromBuffer(buffer, true); - assert.equal(mimes.encoding, 'ascii'); + assert.equal(mimes.encoding, null); }); test('autoGuessEncoding (ShiftJIS)', async function () {