6

ルアでフランス語のテキストを大文字に変換しようとしていますが、アクセント付きの文字が変換されていません。理由はありますか?

テスト スクリプト:

print('échelle')
print(string.upper('échelle'))
print('ÉCHELLE')
print(string.lower('ÉCHELLE'))

出力:

エシェル
エシェル
エシェル
エシェル

4

4 に答える 4

4

少しやり過ぎかもしれませんが、これはslnunicode (LuaRocks で利用可能) で行うことができます。

require "unicode"
print(unicode.utf8.upper("échelle"))
-- ÉCHELLE

ソース ファイルのエンコーディングによっては、unicode.ascii.upperまたはを使用する必要がある場合があります。unicode.latin1.upper

于 2012-07-20T03:02:00.050 に答える
0

toupperLua は、 AFAIKがアクセント付き文字をサポートしていないC ライブラリ関数を使用するだけです。そのためのルーチンを自分で作成する必要があります。

于 2012-07-20T02:47:54.243 に答える
0

これをより効果的に説明すると、Lua には非 ASCII 文字列のサポートが組み込まれていません。Latin-1 または UTF-8 でエンコードされた文字列を格納できますが、特別な文字列操作関数 ( upperlowerなど) は非 ASCII 文字では機能しません。

さまざまな程度の Unicode サポートを追加する Lua ライブラリがあります。したがって、それらのいずれかを使用する必要があります。

于 2012-07-20T06:32:16.070 に答える