光,ADSL対応インターネット プロバイダ。他社インターネット プロバイダからの乗り換えユーザーから高い評価を頂いているプロバイダです。
インターネット接続サービス プロバイダ 光インターネット プロバイダのオープンサーキットHOME インターネット プロバイダ 会社概要 インターネット プロバイダのサイトマップ お問い合わせ 
★IPv4 over IPv6接続コース ★一般向け料金表 ★プロ向け料金表  ★プロバイダ申込手順  ★キャンペーン情報

プロバイダのオープンサーキットTOP > Lazarus関連 > PluginEncoding.pas

PluginEncoding.pas LazarusのWindowsソフトでUTF-8/CP932/EUC-JPを変換

 PluginEncoding.pasは、Windows版Lazarus/Free Pascalから、UTF-8、CP932(Shift_JIS系)、EUC-JPおよび 任意のWindowsコードページをUTF-8を経由し相互変換するためのPascal Unitです。

 BkPluginLazarusTemplateの構成ファイルとして開発したUnitですが、 Becky! Ver.2用プラグインDLLだけでなく、通常のLazarus製Windows EXEからも利用できます。

主な機能、特徴

  • UTF-8からCP932(Shift_JIS系)への変換
  • CP932(Shift_JIS系)からUTF-8への変換
  • UTF-8からEUC-JPへの変換
  • EUC-JPからUTF-8への変換
  • UTF-8から指定したWindowsコードページへの変換
  • 指定したWindowsコードページからUTF-8への変換
  • Windows APIによる文字コード変換
  • Lazarus製DLLおよびEXEからの利用
  • 外部コンポーネントを追加せずに利用可能
  • MIT Licenseによる再利用

動作確認環境

  • 開発環境:Lazarus 4.8 64bit/Free Pascal
  • 対象OS:Windows
  • 確認した形式:通常の64bit Windows EXE/Win32プラグインDLL
  • 収録元:BkPluginLazarusTemplate v1.2.0

 別の 64bit Windows EXEに組み込み、次の変換が動作することを確認しています。

  • UTF-8 → CP932(Shift_JIS系)
  • CP932(Shift_JIS系) → UTF-8
  • UTF-8 → EUC-JP
  • EUC-JP → UTF-8

作成した背景

 Lazarusには、文字コード変換に利用できるLConvEncoding Unitが付属しています。
 ただし、Lazarus 4.8のWindows環境で確認した範囲では、LConvEncodingによるEUC-JP変換は利用できませんでした。

 PluginEncoding.pasは、LConvEncoding全体を置き換えるものではありません。
 Windows APIが提供するコードページ変換を利用し、 Windows版LazarusでEUC-JPなどを扱う必要がある場合の補完手段として作成しています。
 EUC-JP変換には、Windowsコードページ20932を使用しています。

主な公開関数

function Utf8ToCp932(const S: UTF8String): AnsiString;
function Cp932ToUtf8(const S: AnsiString): UTF8String;

function Utf8ToMultiByteCodePage(
  const S: UTF8String;
  CodePage: Cardinal
): AnsiString;

function MultiByteCodePageToUtf8(
  const S: AnsiString;
  CodePage: Cardinal
): UTF8String;

function Utf8ToEucJp(const S: UTF8String): AnsiString;
function EucJpToUtf8(const S: AnsiString): UTF8String;
  • Utf8ToCp932/Cp932ToUtf8
     UTF-8とCP932を相互変換します。
  • Utf8ToEucJp/EucJpToUtf8
     UTF-8とEUC-JPを相互変換します。
  • Utf8ToMultiByteCodePage/MultiByteCodePageToUtf8
     Windowsコードページを指定して変換します。

基本的な使い方

 PluginEncoding.pasを利用するLazarusプロジェクトのフォルダーへコピーし、 文字コード変換を行うUnitのuses節へPluginEncodingを追加します。

uses
  Classes, SysUtils, PluginEncoding;

 他のUnitに同名の関数が存在する場合や、呼び出すUnitを明示したい場合は、 次のようにUnit名を付けて呼び出すこともできます。

ConvertedText := PluginEncoding.Utf8ToEucJp(SourceText);

 詳しい関数宣言、実装および戻り値の扱いについては、 BkPluginLazarusTemplate-v1.2.0-source.zipに含まれるPluginEncoding.pasを参照してください。
 指定できるのは、実行するWindows環境で利用可能なコードページです。

文字コード変換の仕組み

 PluginEncoding.pasは、Windows APIのMultiByteToWideCharとWideCharToMultiByteを使用しています。
 マルチバイト文字列からUTF-8へ変換する場合は、指定されたコードページの文字列を一度Unicodeへ変換し、 そのUnicode文字列をUTF-8へ変換します。
 UTF-8からマルチバイト文字列へ変換する場合は、UTF-8をUnicodeへ変換した後、 指定されたWindowsコードページへ変換します。
 Windows APIを使うため、マルチプラットホームを想定して実装されている、LConvEncodingを使う場合より、 若干生成バイナリサイズが小さくなる場合が有ります。

対応範囲と制限

  • Windows専用のUnitです。
  • Windows APIを使用するため、LinuxおよびmacOSには対応していません。
  • Windows側で利用可能なコードページを使用します。
  • 変換先コードページに存在しない文字は、元の文字どおりに表現できません。
  • すべてのUnicode文字が各コードページとの間で往復変換できることを保証するものではありません。
  • 空文字が入力された場合は空文字を返します。
  • 変換に失敗した場合も空文字を返します。
  • 入力が空だった場合と変換に失敗した場合を、戻り値だけで区別することはできません。
  • 不正なバイト列を含む文字列について、意図した結果になることを保証するものではありません。
  • LConvEncoding全体を置き換えることを目的としたUnitではありません。

 PluginEncoding.pasの変換関数は、変換に失敗した場合に空文字を返します。 入力自体が空文字だった場合も同じ戻り値になるため、両者を戻り値だけで区別することはできません。

 本ページでは、Windowsコードページ932を「CP932」と表記しています。  CP932は、Shift_JISを基礎として、NEC特殊文字やIBM拡張文字などを追加したWindowsの日本語文字コードです。
 厳密には規格上のShift_JISと完全に同一ではありませんが、 WindowsアプリケーションではCP932が「Shift_JIS」と表記されることも多いため、 本ページでは検索性と分かりやすさを考慮し、「CP932(Shift_JIS系)」という表記も使用しています。

ダウンロード

 PluginEncoding.pasは、BkPluginLazarusTemplate v1.2.0のソースコード版に含まれています。

 PluginEncoding.pas単独のZIPは、現在配布していません。

 現在のテンプレート公開ページでは、ソースZIP、SHA256、基本的な使用方法、ライセンス、SDK由来部分がまとめて案内されています。
 ZIP展開後のPluginEncoding.pasを、ご自分の利用するLazarusプロジェクトへコピーするだけですぐに利用できます。
 New-BeckyPlugin.ps1の実行は、PluginEncodingだけを使う人には不要です。

ソースコードとライセンス

 PluginEncoding.pasは、MIT Licenseで公開しています。

 改変、再利用、社内利用、再配布を行う場合は、配布ファイルに含まれる、 LICENSEをご確認ください。

SPDX-FileCopyrightText: 2026 OPEN-CIRCUIT, LTD.
SPDX-License-Identifier: MIT

 PluginEncoding.pasを別のプロジェクトへコピーして再利用または再配布する場合は、 ファイル内の著作権表示および、ライセンス表示を保持し、MIT Licenseの条件に従ってください。

BkPluginLazarusTemplateとの関係

 PluginEncoding.pasは、LazarusでBecky! Ver.2用プラグインを作成するためのBkPluginLazarusTemplateに含まれる共通Unitです。

 BkPluginLazarusTemplateおよび、BkPluginLazarusTemplateで新たに生成したプロジェクトでは、 Becky! Ver.2が使用するCP932文字列との変換、EUC-JPメール本文の変換、 その他のWindowsコードページを使用する文字列変換に利用できます。

 PluginEncoding.pas自体はBecky! Ver.2のAPIへ依存していないため、通常のLazarus製Windows EXE内でも利用できます。

免責事項・サポート

 本ソフトウェアは無保証で提供しています。
 本ソースコードの使用または使用不能によって生じた損害について、公開元は責任を負いません。

 すべての文字、文字コード、入力データおよび、 Windows環境での変換結果を保証するものではありません。

 本ソースコードに関する個別の導入支援、Lazarusプロジェクトへの組み込み、文字化け調査、 コードページの選定、ソースコード変更またはカスタマイズには対応していません。

公開元

 PluginEncoding.pas は、有限会社オープンサーキットが開発・公開しています。

 有限会社オープンサーキット

ページトップへ




一般第二種電気通信事業
F-10-281


速度改善コース↓


速度を快適に、v6Neo/v6Direct