ルアでフランス語のテキストを大文字に変換しようとしていますが、アクセント付きの文字が変換されていません。理由はありますか?
テスト スクリプト:
print('échelle')
print(string.upper('échelle'))
print('ÉCHELLE')
print(string.lower('ÉCHELLE'))
出力:
エシェル
エシェル
エシェル
エシェル
ルアでフランス語のテキストを大文字に変換しようとしていますが、アクセント付きの文字が変換されていません。理由はありますか?
テスト スクリプト:
print('échelle')
print(string.upper('échelle'))
print('ÉCHELLE')
print(string.lower('ÉCHELLE'))
出力:
エシェル
エシェル
エシェル
エシェル
少しやり過ぎかもしれませんが、これはslnunicode (LuaRocks で利用可能) で行うことができます。
require "unicode"
print(unicode.utf8.upper("échelle"))
-- ÉCHELLE
ソース ファイルのエンコーディングによっては、unicode.ascii.upper
またはを使用する必要がある場合があります。unicode.latin1.upper
toupper
Lua は、 AFAIKがアクセント付き文字をサポートしていないC ライブラリ関数を使用するだけです。そのためのルーチンを自分で作成する必要があります。
これをより効果的に説明すると、Lua には非 ASCII 文字列のサポートが組み込まれていません。Latin-1 または UTF-8 でエンコードされた文字列を格納できますが、特別な文字列操作関数 ( upper
、lower
など) は非 ASCII 文字では機能しません。
さまざまな程度の Unicode サポートを追加する Lua ライブラリがあります。したがって、それらのいずれかを使用する必要があります。