Skip to main content

UTF-8エンコーディング

基本

のアプリケーション CODESYS たとえば、さまざまな言語でエラーメッセージを出力するために、さまざまな文字を処理できます。または、さまざまな言語、文字、または記号でのユーザー入力を受け入れる、ユーザーが選択した言語で視覚化を表示します。

包括的な文字セットが必要ない場合、またはプロジェクトを変更する必要がない場合でも、Latin-1形式でエンコードされた文字列を使用できます。

3. 文字セットテーブル

キャラクターセット

コードページ番号

説明

文字コード

ASCII

20127

  • 128文字

  • 英語のテキストに適しています

7ビットでエンコードされた文字

DOS-Latin-1

819, 850

  • ISO8859に準拠

  • Windowsコマンドラインウィンドウの西ヨーロッパ言語に適しています

8ビットエンコード文字

ラテン-1

28591

  • ISO-8859-1に準拠

  • 多くの場合、äöüßは含まれているが€は含まれていない、またはたとえば特殊なフランス語文字が含まれていないHTMLページに使用されます

8ビットエンコード文字

Windows1252エンコーディング

1252

  • 西ヨーロッパ諸国のデフォルトのWindows文字セット

  • Windowsは内部でUTF-16形式を使用します

  • ISO8859-1およびISO8859-15のすべての文字が含まれていますが、エンコーディングが部分的に異なります

8ビットエンコード文字

Unicode

  • 歴史的な言語、点字、音楽、絵文字など、考えられるすべての言語のユニバーサル文字セット

  • 100,000文字以上を表示できます。

  • 各文字には数値コードがあります。

  • ASCIIとは対照的に、文字へのコードポイントの割り当てと文字のエンコードは分離されます。

  • 128未満の数値コードはASCII互換です

  • 256未満の数値コードはISO8859-1と互換性があります

詳細については、以下を参照してください。 https://home.unicode.org/

Unicode 14.0

144,697文字

UTF-16

1200

  • 特別なUnicode

  • 一部のオペレーティングシステム(Windows、OS X)およびプログラミング言語(Java、.NET)で内部文字表現に使用されます

  • コンピュータアーキテクチャが異なれば、4バイト文字のエンコードも異なることに注意してください。

    UTF-16LEのリトルエンディアンバイトオーダー

16ビットエンコード文字

文字は2バイトまたは4バイトでエンコードされます。

UTF-8

65001

  • Unicode文字のバイト指向のエンコード形式

  • 最も普及している

  • GNU / LinuxおよびUnixオペレーティングシステム、およびさまざまなインターネットサービス(電子メール、Web、ブラウザ)で使用されます

  • 最初の128文字(0〜127)のASCII文字と互換性があります

1文字あたり8ビットワードのタプル

文字は、1〜4バイトのさまざまな長さでエンコードされます。



UTF-8で CODESYS

ヒント

UTF-8エンコーディングは、最も包括的な文字セットを使用したエンコーディングです。したがって、新しいプロジェクトおよび既存のプロジェクトでUTF-8エンコーディングを有効にして、新しいコンテキストで使用することをお勧めします。

4. プロジェクト全体のエンコーディング CODESYS

データ・タイプ

コンパイルオプション:STRINGのUTF8エンコーディング

プロジェクト全体でどのエンコーディングが使用されていますか?

STRING

有効

UTF-8

無効

Windows 1252エンコーディング(デフォルトのWindowsエンコーディング)

ラテン-1

WSTRING

有効

UTF-16

無効

UTF-16



CODESYSSTRING データ型は、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#'äöü' その後、誤解されます。ビジュアライゼーションで文字列を出力するときにも、同様の問題が発生する可能性があります。