No longer allow block mode for declare(encoding)

php.internals

Christoph Becker

4 years ago
Hi all, recently, there was a bug report regarding declare(encoding)[1]. I've checked that, and found that the current implementation of declare(encoding) doesn't make sense regarding "block mode", since this is completely ignored; instead, each (allowed) declare(encoding) works from where it is written till the next declare(encoding) (well, probably more or less). Since I consider switching the character encoding in the middle of a file not reasonable (and it might be hard to properly implement support for that), I suggest to disallow block mode for declare(encoding) as of PHP 8.3. A respective PR is available[2]. Thoughts? [1] <https://github.com/php/php-src/issues/9446> [2] <https://github.com/php/php-src/pull/9455>
-- Christoph M. Becker

Sara Golemon

4 years ago
On Wed, Aug 31, 2022 at 10:43 AM Christoph M. Becker <cmbecker69@gmx.de> wrote:
> recently, there was a bug report regarding declare(encoding)[1]. I've > checked that, and found that the current implementation of > declare(encoding) doesn't make sense regarding "block mode", since this > is completely ignored; instead, each (allowed) declare(encoding) works > from where it is written till the next declare(encoding) (well, probably > more or less). > > Since I consider switching the character encoding in the middle of a > file not reasonable (and it might be hard to properly implement support > for that), I suggest to disallow block mode for declare(encoding) as of > PHP 8.3. A respective PR is available[2]. > >
I think I can imagine scenarios where switching encodings within a file would.... work? Especially for ASCII transparent encodings... That said, if you're currently depending on multiple encodings in a single file then you probably deserve whatever you get. +1 -Sara

Hans Henrik Bergan

4 years ago
>it might be hard to properly implement support
No effort should be wasted supporting this. +1 On Wed, Aug 31, 2022, 21:21 Sara Golemon <pollita@php.net> wrote: