そもそも Ruby は Unicode 以外の文字集合も扱えるとかで、よく抽象化できたものだなぁと (実は逆に大して抽象化していないゆえにインターフェースを提供できている説も考えられる) (しらんが)
言うて下手に「文字」を定義しようとせず「特定の文字符号による文字列」それぞれに型を割り当てていけば、割とどうとでもなるというのはある (たとえば Rust でも UTF-8 とは限らない OS ネイティブな文字列型 OsStr などがあり)
その辺りは本来はサードパーティの文字コード型ライブラリとか特定文字符号用ライブラリとかが管轄すべきことだとは思う
Rust の str / String も、言ってみれば UTF-8 文字列ライブラリ (のコア機能のみ) なわけで。