Make WordPress Core

Opened 4 years ago

Closed 4 years ago

#52131 closed defect (bug) (duplicate)

wp_check_invalid_utf8() - PHP Notice: iconv()

Reported by: campusboy1987's profile campusboy1987 Owned by:
Milestone: Priority: normal
Severity: normal Version: 5.6
Component: Formatting Keywords:
Focuses: Cc:

Description

Hello. I test the function and php issues warnings.

13 examples:

$examples = [
	'Valid ASCII'                               => "a",
	'Valid 2 Octet Sequence'                    => "\xc3\xb1",
	'Invalid 2 Octet Sequence'                  => "\xc3\x28",
	'Invalid Sequence Identifier'               => "\xa0\xa1",
	'Valid 3 Octet Sequence'                    => "\xe2\x82\xa1",
	'Invalid 3 Octet Sequence (in 2nd Octet)'   => "\xe2\x28\xa1",
	'Invalid 3 Octet Sequence (in 3rd Octet)'   => "\xe2\x82\x28",
	'Valid 4 Octet Sequence'                    => "\xf0\x90\x8c\xbc",
	'Invalid 4 Octet Sequence (in 2nd Octet)'   => "\xf0\x28\x8c\xbc",
	'Invalid 4 Octet Sequence (in 3rd Octet)'   => "\xf0\x90\x28\xbc",
	'Invalid 4 Octet Sequence (in 4th Octet)'   => "\xf0\x28\x8c\x28",
	'Valid 5 Octet Sequence (but not Unicode!)' => "\xf8\xa1\xa1\xa1\xa1",
	'Valid 6 Octet Sequence (but not Unicode!)' => "\xfc\xa1\xa1\xa1\xa1\xa1",
];

$result = [];

foreach ( $examples as $key => $value ) {
	$result[ $key ] = wp_check_invalid_utf8( $value, true );
}

Result (4 not empty lines):

Array (
	[Valid ASCII]                               => a
	[Valid 2 Octet Sequence]                    => ñ
	[Invalid 2 Octet Sequence]                  => 
	[Invalid Sequence Identifier]               => 
	[Valid 3 Octet Sequence]                    => ₡
	[Invalid 3 Octet Sequence (in 2nd Octet)]   => 
	[Invalid 3 Octet Sequence (in 3rd Octet)]   => 
	[Valid 4 Octet Sequence]                    => 𐌼
	[Invalid 4 Octet Sequence (in 2nd Octet)]   => 
	[Invalid 4 Octet Sequence (in 3rd Octet)]   => 
	[Invalid 4 Octet Sequence (in 4th Octet)]   => 
	[Valid 5 Octet Sequence (but not Unicode!)] => 
	[Valid 6 Octet Sequence (but not Unicode!)] => 
)

The following errors are displayed in the logs (9):

Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131
Notice: iconv(): Detected an illegal character in input string in ...\wp-includes\formatting.php on line 1131

If you do not use the second argument of the function, then everything is fine.

The warning generates the following code section:

// Attempt to strip the bad chars if requested (not recommended).
if ( $strip && function_exists( 'iconv' ) ) {
    return iconv( 'utf-8', 'utf-8', $string );
}

Change History (1)

#1 @SergeyBiryukov
4 years ago

  • Milestone Awaiting Review deleted
  • Resolution set to duplicate
  • Status changed from new to closed

Hi there, thanks for the report!

We're already tracking this issue in #11175 and #29717.

Note: See TracTickets for help on using tickets.