diff --git a/src/sort.rs b/src/sort.rs
index 670f664a119..0cdd937b4f5 100644
--- a/src/sort.rs
+++ b/src/sort.rs
@@ -65,7 +65,7 @@ impl<'a> VersionChunkIter<'a> {
                 break;
             }
 
-            if !c.is_numeric() {
+            if !c.is_ascii_digit() {
                 continue;
             }
 
@@ -283,6 +283,10 @@ mod test {
                 source: "009"
             })
         );
+
+        // '๙' = U+0E59 THAI DIGIT NINE, General Category Nd
+        let mut iter = VersionChunkIter::new("x๙v");
+        assert_eq!(iter.next(), Some(VersionChunk::Str("x๙v")));
     }
 
     #[test]
@@ -297,6 +301,11 @@ mod test {
         input.sort_by(|a, b| version_sort(a, b));
         assert_eq!(input, expected);
 
+        let mut input = vec!["x๙x", "xéx", "x0x"];
+        let expected = vec!["x0x", "xéx", "x๙x"];
+        input.sort_by(|a, b| version_sort(a, b));
+        assert_eq!(input, expected);
+
         let mut input = vec!["applesauce", "apple"];
         let expected = vec!["apple", "applesauce"];
         input.sort_by(|a, b| version_sort(a, b));
diff --git a/tests/source/non_ascii_numerics_import_asciibetically.rs b/tests/source/non_ascii_numerics_import_asciibetically.rs
new file mode 100644
index 00000000000..bada80dc2fb
--- /dev/null
+++ b/tests/source/non_ascii_numerics_import_asciibetically.rs
@@ -0,0 +1,17 @@
+// rustfmt-style_edition: 2015
+
+// ascii-betically sorted
+pub use print๙msg;
+pub use print0msg;
+pub use printémsg;
+
+fn main() {}
+
+/// '๙' = 0E59;THAI DIGIT NINE;Nd; (Non-ASCII Decimal_Number, sorts third)
+mod print๙msg {}
+
+/// '0' = 0030;DIGIT ZERO;Nd; (ASCII Decimal_Number, sorts first)
+mod print0msg {}
+
+/// 'é' = 00E9;LATIN SMALL LETTER E WITH ACUTE;Ll; (Lowercase_Letter, sorts second)
+mod printémsg {}
\ No newline at end of file
diff --git a/tests/source/non_ascii_numerics_import_versionsort.rs b/tests/source/non_ascii_numerics_import_versionsort.rs
new file mode 100644
index 00000000000..e82c4a12aa8
--- /dev/null
+++ b/tests/source/non_ascii_numerics_import_versionsort.rs
@@ -0,0 +1,23 @@
+// rustfmt-style_edition: 2024
+
+// versionsorted
+pub use print๙msg;
+pub use print0msg;
+pub use printémsg;
+
+fn main() {}
+
+/// '๙' = 0E59;THAI DIGIT NINE;Nd; (Non-ASCII Decimal_Number, one string chunk)
+///
+/// U+0E59 > U+00E9, sorts third
+mod print๙msg {}
+
+/// '0' = 0030;DIGIT ZERO;Nd; (ASCII Decimal_Number, splits into 3 chunks ("print",0,"msg"))
+///
+/// shortest chunk "print", sorts first
+mod print0msg {}
+
+/// 'é' = 00E9;LATIN SMALL LETTER E WITH ACUTE;Ll; (Lowercase_Letter, one string chunk)
+///
+/// U+00E9 < U+0E59, sorts second
+mod printémsg {}
\ No newline at end of file
diff --git a/tests/target/non_ascii_numerics_import_asciibetically.rs b/tests/target/non_ascii_numerics_import_asciibetically.rs
new file mode 100644
index 00000000000..1e5718a01ff
--- /dev/null
+++ b/tests/target/non_ascii_numerics_import_asciibetically.rs
@@ -0,0 +1,17 @@
+// rustfmt-style_edition: 2015
+
+// ascii-betically sorted
+pub use print0msg;
+pub use printémsg;
+pub use print๙msg;
+
+fn main() {}
+
+/// '๙' = 0E59;THAI DIGIT NINE;Nd; (Non-ASCII Decimal_Number, sorts third)
+mod print๙msg {}
+
+/// '0' = 0030;DIGIT ZERO;Nd; (ASCII Decimal_Number, sorts first)
+mod print0msg {}
+
+/// 'é' = 00E9;LATIN SMALL LETTER E WITH ACUTE;Ll; (Lowercase_Letter, sorts second)
+mod printémsg {}
diff --git a/tests/target/non_ascii_numerics_import_versionsort.rs b/tests/target/non_ascii_numerics_import_versionsort.rs
new file mode 100644
index 00000000000..88b5dff8177
--- /dev/null
+++ b/tests/target/non_ascii_numerics_import_versionsort.rs
@@ -0,0 +1,23 @@
+// rustfmt-style_edition: 2024
+
+// versionsorted
+pub use print0msg;
+pub use printémsg;
+pub use print๙msg;
+
+fn main() {}
+
+/// '๙' = 0E59;THAI DIGIT NINE;Nd; (Non-ASCII Decimal_Number, one string chunk)
+///
+/// U+0E59 > U+00E9, sorts third
+mod print๙msg {}
+
+/// '0' = 0030;DIGIT ZERO;Nd; (ASCII Decimal_Number, splits into 3 chunks ("print",0,"msg"))
+///
+/// shortest chunk "print", sorts first
+mod print0msg {}
+
+/// 'é' = 00E9;LATIN SMALL LETTER E WITH ACUTE;Ll; (Lowercase_Letter, one string chunk)
+///
+/// U+00E9 < U+0E59, sorts second
+mod printémsg {}