diff --git a/src/vs/base/common/uri.ts b/src/vs/base/common/uri.ts index a84bfc7338eeb64f55d6f028609469b3cfb1c644..412efc1738840ca3fb961334f6a46ec4a653cba3 100644 --- a/src/vs/base/common/uri.ts +++ b/src/vs/base/common/uri.ts @@ -565,7 +565,7 @@ function _asFormatted(uri: URI, skipEncoding: boolean): string { } if (fragment) { res += '#'; - res += encoder(fragment, false); + res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment; } return res; } diff --git a/src/vs/base/test/common/uri.test.ts b/src/vs/base/test/common/uri.test.ts index 597ffe35e610b7665098184c0c1911d16c649dff..618a56a1493cdc1390486946f6fd4d17ee2df7fc 100644 --- a/src/vs/base/test/common/uri.test.ts +++ b/src/vs/base/test/common/uri.test.ts @@ -451,6 +451,16 @@ suite('URI', () => { assert.equal(fileUri2.authority, ''); }); + test('Ctrl click to follow hash query param url gets urlencoded #49628', function () { + let input = 'http://localhost:3000/#/foo?bar=baz'; + let uri = URI.parse(input); + assert.equal(uri.toString(true), input); + + input = 'http://localhost:3000/foo?bar=baz'; + uri = URI.parse(input); + assert.equal(uri.toString(true), input); + }); + test('URI - (de)serialize', function () { var values = [