Index: src/wp-includes/comment.php
===================================================================
--- src/wp-includes/comment.php	(revision 54865)
+++ src/wp-includes/comment.php	(working copy)
@@ -97,7 +97,7 @@
 			 * Check the comment fields for moderation keywords. If any are found,
 			 * fail the check for the given field by returning false.
 			 */
-			$pattern = "#$word#i";
+			$pattern = "#$word#iu";
 			if ( preg_match( $pattern, $author ) ) {
 				return false;
 			}
@@ -1357,7 +1357,7 @@
 		// in the spam words don't break things:
 		$word = preg_quote( $word, '#' );
 
-		$pattern = "#$word#i";
+		$pattern = "#$word#iu";
 		if ( preg_match( $pattern, $author )
 			|| preg_match( $pattern, $email )
 			|| preg_match( $pattern, $url )
Index: tests/phpunit/tests/comment/checkComment.php
===================================================================
--- tests/phpunit/tests/comment/checkComment.php	(revision 54865)
+++ tests/phpunit/tests/comment/checkComment.php	(working copy)
@@ -70,7 +70,7 @@
 		$this->assertTrue( $results );
 	}
 
-	public function test_should_return_false_when_content_matches_moderation_key() {
+	public function test_should_return_false_when_content_matches_moderation_keys() {
 		update_option( 'comment_previously_approved', 0 );
 
 		$author       = 'WendytheBuilder';
@@ -86,6 +86,25 @@
 		$this->assertFalse( $results );
 	}
 
+	/**
+	 * @ticket 57207
+	 */
+	public function test_should_return_false_when_content_with_non_latin_words_matches_moderation_keys() {
+		update_option( 'comment_previously_approved', 0 );
+
+		$author       = 'Setup';
+		$author_email = 'setup@example.com';
+		$author_url   = 'http://example.com';
+		$comment      = 'Установка';
+		$author_ip    = '192.168.0.1';
+		$user_agent   = '';
+		$comment_type = '';
+
+		update_option( 'moderation_keys', "установка\nfoo" );
+		$results = check_comment( $author, $author_email, $author_url, $comment, $author_ip, $user_agent, $comment_type );
+		$this->assertFalse( $results );
+	}
+
 	public function test_should_return_true_when_content_does_not_match_moderation_keys() {
 		update_option( 'comment_previously_approved', 0 );
 
Index: tests/phpunit/tests/comment/wpCheckCommentDisallowedList.php
===================================================================
--- tests/phpunit/tests/comment/wpCheckCommentDisallowedList.php	(revision 54865)
+++ tests/phpunit/tests/comment/wpCheckCommentDisallowedList.php	(working copy)
@@ -40,6 +40,24 @@
 		$this->assertTrue( $result );
 	}
 
+	/**
+	 * @ticket 57207
+	 */
+	public function test_should_return_true_when_content_with_non_latin_words_matches_disallowed_keys() {
+		$author       = 'Setup';
+		$author_email = 'setup@example.com';
+		$author_url   = 'http://example.com';
+		$comment      = 'Установка';
+		$author_ip    = '192.168.0.1';
+		$user_agent   = '';
+
+		update_option( 'disallowed_keys', "установка\nfoo" );
+
+		$result = wp_check_comment_disallowed_list( $author, $author_email, $author_url, $comment, $author_ip, $user_agent );
+
+		$this->assertTrue( $result );
+	}
+
 	public function test_should_return_true_when_author_matches_disallowed_keys() {
 		$author       = 'Sideshow Mel';
 		$author_email = 'mel@example.com';
