Apply a filter str_replace on specific caracters array in the_content()

You could obtain what you need like this:

function str_replace_special_caracter($content) {

    // My array of special caracters to get <sup>
    $specialCaracters = array('®', '™');

    foreach( $specialCaracters as $character ){

        $content = preg_replace( '@(' . preg_quote( $character, '@' ) . ')@i', "<sup>\\1</sup>", $content );

    }

    // Return
    return $content;

}

add_filter( 'the_content', 'str_replace_special_caracter', 99 );