Store unmodified text content in database

You could refer to this:

function my_formatter($content) {
       $new_content="";
       $pattern_full="{(\[raw\].*?\[/raw\])}is";
       $pattern_contents="{\[raw\](.*?)\[/raw\]}is";
       $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

       foreach ($pieces as $piece) {
               if (preg_match($pattern_contents, $piece, $matches)) {
                       $new_content .= $matches[1];
               } else {
                       $new_content .= wptexturize(wpautop($piece));
               }
       }


       return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

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

Basically, what this does it alters the existing [raw] shortcode and by wrapping your content inside this shortcode, WordPress should stop messing with your code 🙂

Hope this helps.