UTF-8エンコーディング
基本
のアプリケーション CODESYS たとえば、さまざまな言語でエラーメッセージを出力するために、さまざまな文字を処理できます。または、さまざまな言語、文字、または記号でのユーザー入力を受け入れる、ユーザーが選択した言語で視覚化を表示します。
包括的な文字セットが必要ない場合、またはプロジェクトを変更する必要がない場合でも、Latin-1形式でエンコードされた文字列を使用できます。
キャラクターセット | コードページ番号 | 説明 | 文字コード |
---|---|---|---|
ASCII | 20127 |
| 7ビットでエンコードされた文字 |
DOS-Latin-1 | 819, 850 |
| 8ビットエンコード文字 |
ラテン-1 | 28591 |
| 8ビットエンコード文字 |
Windows1252エンコーディング | 1252 |
| 8ビットエンコード文字 |
Unicode |
詳細については、以下を参照してください。 https://home.unicode.org/ | ||
Unicode 14.0 | 144,697文字 | ||
UTF-16 | 1200 |
| 16ビットエンコード文字 文字は2バイトまたは4バイトでエンコードされます。 |
UTF-8 | 65001 |
| 1文字あたり8ビットワードのタプル 文字は、1〜4バイトのさまざまな長さでエンコードされます。 |
UTF-8で CODESYS
ヒント
UTF-8エンコーディングは、最も包括的な文字セットを使用したエンコーディングです。したがって、新しいプロジェクトおよび既存のプロジェクトでUTF-8エンコーディングを有効にして、新しいコンテキストで使用することをお勧めします。
データ・タイプ | コンパイルオプション:STRINGのUTF8エンコーディング | プロジェクト全体でどのエンコーディングが使用されていますか? |
---|---|---|
| 有効 | UTF-8 |
無効 | Windows 1252エンコーディング(デフォルトのWindowsエンコーディング) ラテン-1 | |
| 有効 | UTF-16 |
無効 | UTF-16 |
の CODESYS、 STRING
データ型は、Latin-1またはUTF-8形式でエンコードできます。 The WSTRING
データ型は、UTF-16では常にその文字をUnicodeとしてエンコードします。
単一の文字列リテラルをUTF-8形式でエンコードする
プロジェクト全体のエンコード形式がLatin-1に設定されている場合でも、単一のリテラルをUTF-8形式でエンコードできます。これを行うには、を追加します UTF8#
リテラルのプレフィックスを入力します。
{attribute 'monitoring_encoding' := 'UTF-8'} strVarUtf8: STRING := UTF8#'你好,世界!ÜüÄäÖö';
詳細については、以下を参照してください。定数: UTF8#文字列;プラグマ属性: monitoring_encoding
UTF-8エンコーディングの文字列変換
プロジェクト全体でUTF-8エンコーディングを有効にしている場合は、通常どおり文字列変換関数を使用できます。
文字列操作
ライブラリ関数を使用して文字列を操作します。
もしも STRING
変数を操作する必要があります。そうすると、ASCII形式の変数へのインデックスアクセスにより、多くの場合、目的の結果が得られます。この構成は使用しない方がよいでしょう。それは単に悪いプログラミングスタイルではありません。さらに悪いことに、UTF-8エンコーディングでは、インデックスアクセスによって不要な文字列操作が発生します。
プロジェクト全体の構成専用のUTF-8エンコーディング
プロジェクト全体のコンパイルオプションの場合、UTF-8エンコーディングが使用されます STRINGのUTF8エンコーディング 有効になっています。ライブラリ関数とアドオンも、この設定に従って方向付けられます。
単一のUTF-8エンコード文字列を使用する場合は、それらが使用される場所で正しく解釈されることを確認する必要があります。たとえば、設定が選択されていない場合、OPCサーバーの文字列変数はクライアントに転送される前にUTF-8に変換されます。次のような値 UTF8#'äöü'
その後、誤解されます。ビジュアライゼーションで文字列を出力するときにも、同様の問題が発生する可能性があります。