Skip to content

iconv(): Wrong charset, conversion from utf-32le to utf-8 is not allowed #341

Open
@Schrank

Description

@Schrank

I don't understand why and I am not able to reproduce this issue on our staging server (it happens on the production system). But maybe someone else has more knowledge about all this than me.

12:34:45 WARNING   [php] Notice: iconv(): Wrong charset, conversion from `utf-32le' to `utf-8' is not allowed
[
  "exception" => ErrorException {
    #message: "Notice: iconv(): Wrong charset, conversion from `utf-32le' to `utf-8' is not allowed"
    #code: 0
    #file: "/web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/ParserState.php"
    #line: 91
    #severity: E_NOTICE
    trace: {
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/ParserState.php:91 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/CSSString.php:37 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/Value.php:90 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/Value.php:36 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Rule/Rule.php:39 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/RuleSet.php:35 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php:33 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSList.php:98 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSList.php:49 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php:21 { …}
      /web/releases/20210916164447/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parser.php:38 { …}
      /web/releases/20210916164447/vendor/shopware/storefront/Theme/Autoprefixer.php:31 { …}
      /web/releases/20210916164447/vendor/shopware/storefront/Theme/ThemeCompiler.php:224 { …}
      /web/releases/20210916164447/vendor/shopware/storefront/Theme/ThemeCompiler.php:127 { …}
      /web/releases/20210916164447/vendor/shopware/storefront/Theme/ThemeService.php:68 { …}
      /web/releases/20210916164447/vendor/shopware/storefront/Theme/Command/ThemeCompileCommand.php:63 { …}
      /web/releases/20210916164447/vendor/symfony/console/Command/Command.php:255 { …}
      /web/releases/20210916164447/vendor/symfony/console/Application.php:1027 { …}
      /web/releases/20210916164447/vendor/symfony/framework-bundle/Console/Application.php:97 { …}
      /web/releases/20210916164447/vendor/symfony/console/Application.php:273 { …}
      /web/releases/20210916164447/vendor/symfony/framework-bundle/Console/Application.php:83 { …}
      /web/releases/20210916164447/vendor/symfony/console/Application.php:149 { …}
      /web/releases/20210916164447/bin/console:68 {
        › $application = new Application($kernel->getKernel());
        › $application->run($input);
        ›
      }
    }
  }
]

The problem happens while compiling a shopware theme and my solution is to change line 91 of the ParserState:

// from
return iconv('utf-32le', $this->sCharset, $sUtf32);
// to
mb_convert_encoding($sUtf32 , $this->sCharset , 'UTF-32LE');

It seems some versions of iconv can't convert UTF32LE to UTF-8, although the PHP and iconv version are the same on both my machines 🤷

Feel free to not accept the PR, for the moment I'll fix it with a composer-patch.

P.S. Thanks for your work! <3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions