WordPress at a glance
function is not described

mbstring_binary_safe_encoding() WP 3.7.0

Set the mbstring internal encoding to a binary safe encoding when func_overload is enabled.

When mbstring.func_overload is in use for multi-byte encodings, the results from strlen() and similar functions respect the utf8 characters, causing binary data to return incorrect lengths.

This function overrides the mbstring encoding to a binary-safe encoding, and resets it to the users expected encoding afterwards through the reset_mbstring_encoding function.

It is safe to recursively call this function, however each mbstring_binary_safe_encoding() call must be followed up with an equal number of reset_mbstring_encoding() calls.

  • See: reset_mbstring_encoding()
  • Static. Array. $encodings
  • Static. true/false. $overloaded

No Hooks.

Return

Nothing (null).

Usage

mbstring_binary_safe_encoding( $reset );
$reset(true/false)
Whether to reset the encoding back to a previously-set encoding.
Default: false

Code of mbstring binary safe encoding: wp-includes/functions.php WP 5.2.2

<?php
function mbstring_binary_safe_encoding( $reset = false ) {
	static $encodings  = array();
	static $overloaded = null;

	if ( is_null( $overloaded ) ) {
		$overloaded = function_exists( 'mb_internal_encoding' ) && ( ini_get( 'mbstring.func_overload' ) & 2 );
	}

	if ( false === $overloaded ) {
		return;
	}

	if ( ! $reset ) {
		$encoding = mb_internal_encoding();
		array_push( $encodings, $encoding );
		mb_internal_encoding( 'ISO-8859-1' );
	}

	if ( $reset && $encodings ) {
		$encoding = array_pop( $encodings );
		mb_internal_encoding( $encoding );
	}
}