AM Daemon ライブラリリファレンス
クラス | 静的公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
amdaemon::util::WinEncoding クラス

Windows環境に特化した文字コード変換処理を提供する静的クラス。 [詳解]

#include <WinEncoding.h>

+ amdaemon::util::WinEncoding 連携図

クラス

struct  MbcsToUtf8Tag
 マルチバイト文字列(CP932)からUTF-8文字列への変換を示すタグ構造体。 [詳解]
 
struct  MbcsToWideTag
 マルチバイト文字列(CP932)からワイド文字列(UTF-16LE)への変換を示すタグ構造体。 [詳解]
 
struct  Utf8ToMbcsTag
 UTF-8文字列からマルチバイト文字列(CP932)への変換を示すタグ構造体。 [詳解]
 
struct  Utf8ToWideTag
 UTF-8文字列からワイド文字列への変換を示すタグ構造体。 [詳解]
 
struct  WideToMbcsTag
 ワイド文字列からマルチバイト文字列(CP932)への変換を示すタグ構造体。 [詳解]
 
struct  WideToUtf8Tag
 ワイド文字列からUTF-8文字列への変換を示すタグ構造体。 [詳解]
 

静的公開メンバ関数

static std::wstring convert (std::uint32_t codePage, const std::string &src, bool remappingSjisToMbcs=true)
 ANSI文字列をワイド文字列に変換する。 [詳解]
 
static std::string convert (std::uint32_t codePage, const std::wstring &src, bool remappingSjisToMbcs=true)
 ワイド文字列をANSI文字列に変換する。 [詳解]
 
static std::wstring convert (const std::string &src, bool remappingSjisToMbcs=true)
 マルチバイト文字列(CP932)をワイド文字列に変換する。 [詳解]
 
static std::string convert (const std::wstring &src, bool remappingSjisToMbcs=true)
 ワイド文字列をマルチバイト文字列(CP932)に変換する。 [詳解]
 
static std::wstring convert (MbcsToWideTag tag, const std::string &src, bool remappingSjisToMbcs=true)
 マルチバイト文字列(CP932)をワイド文字列に変換する。 [詳解]
 
static std::wstring convertMbcsToWide (const std::string &src)
 マルチバイト文字列(CP932)をワイド文字列に変換する。 [詳解]
 
static std::string convert (WideToMbcsTag tag, const std::wstring &src, bool remappingSjisToMbcs=true)
 ワイド文字列をマルチバイト文字列(CP932)に変換する。 [詳解]
 
static std::string convertWideToMbcs (const std::wstring &src, bool remappingSjisToMbcs=true)
 ワイド文字列をマルチバイト文字列(CP932)に変換する。 [詳解]
 
static std::wstring convert (Utf8ToWideTag tag, const std::string &src, bool remappingSjisToMbcs=true)
 UTF-8文字列をワイド文字列に変換する。 [詳解]
 
static std::wstring convertUtf8ToWide (const std::string &src)
 UTF-8文字列をワイド文字列に変換する。 [詳解]
 
static std::string convert (WideToUtf8Tag tag, const std::wstring &src, bool remappingSjisToMbcs=true)
 ワイド文字列をUTF-8文字列に変換する。 [詳解]
 
static std::string convertWideToUtf8 (const std::wstring &src)
 ワイド文字列をUTF-8文字列に変換する。 [詳解]
 
static std::string convert (MbcsToUtf8Tag tag, const std::string &src, bool remappingSjisToMbcs=true)
 マルチバイト文字列(CP932)をUTF-8文字列に変換する。 [詳解]
 
static std::string convertMbcsToUtf8 (const std::string &src)
 マルチバイト文字列(CP932)をUTF-8文字列に変換する。 [詳解]
 
static std::string convert (Utf8ToMbcsTag tag, const std::string &src, bool remappingSjisToMbcs=true)
 UTF-8文字列をマルチバイト文字列(CP932)に変換する。 [詳解]
 
static std::string convertUtf8ToMbcs (const std::string &src, bool remappingSjisToMbcs=true)
 UTF-8文字列をマルチバイト文字列(CP932)に変換する。 [詳解]
 
static wchar_t * remapSjisToMbcs (wchar_t *target, std::size_t length=SIZE_MAX)
 本来のシフトJISとCP932との間でマッピングの異なるワイド文字について、 CP932への文字コード変換用に再マッピングする。 [詳解]
 
static std::wstring & remapSjisToMbcs (std::wstring &target, std::size_t length=SIZE_MAX)
 本来のシフトJISとCP932との間でマッピングの異なるワイド文字について、 CP932への文字コード変換用に再マッピングする。 [詳解]
 

静的公開変数類

static const std::uint32_t CodePageMbcs
 マルチバイト文字列(CP932)のコードページ値 932 。 [詳解]
 
static const std::uint32_t CodePageUtf8
 UTF-8のコードページ値 65001 。 [詳解]
 
static const std::uint32_t CodePageAscii
 ASCIIのコードページ値 1252 。 [詳解]
 
static const MbcsToWideTag MbcsToWide
 マルチバイト文字列(CP932)からワイド文字列への変換を示すタグ。 [詳解]
 
static const WideToMbcsTag WideToMbcs
 ワイド文字列からマルチバイト文字列(CP932)への変換を示すタグ。 [詳解]
 
static const Utf8ToWideTag Utf8ToWide
 UTF-8文字列からワイド文字列への変換を示すタグ。 [詳解]
 
static const WideToUtf8Tag WideToUtf8
 ワイド文字列からUTF-8文字列への変換を示すタグ。 [詳解]
 
static const MbcsToUtf8Tag MbcsToUtf8
 マルチバイト文字列(CP932)からUTF-8文字列への変換を示すタグ。 [詳解]
 
static const Utf8ToMbcsTag Utf8ToMbcs
 UTF-8文字列からマルチバイト文字列(CP932)への変換を示すタグ。 [詳解]
 

詳解

Windows環境に特化した文字コード変換処理を提供する静的クラス。

参照
Encoding

下記の Windows API 関数を用いた、 ANSI文字列とワイド文字列との間の文字コード変換処理を提供する。

ANSI文字列とは、ここでは char の配列で表す文字列全般を指す。 ワイド文字列とは、 wchar_t の配列で表す文字列を指す。 Windows環境においてワイド文字列の文字コードはUTF-16LEである。

静的メンバ関数 convert は、第1引数にコードページ値または変換種別タグ、 第2引数に変換元文字列を渡すことで文字コード変換を行う。 マルチバイト文字列(CP932)とワイド文字列との間の変換については、 コードページ値や変換種別タグの指定が不要なオーバロードも定義される。

// ワイド文字列の L"あいうえお" をマルチバイト文字列化する
std::string aiueo = WinEncoding::convert(WinEncoding::CodePageMbcs, L"あいうえお");
// マルチバイト文字列(CP932)の "あいうえお" をUTF-8化する
std::string u8aiueo = WinEncoding::convert(WinEncoding::MbcsToUtf8, "あいうえお");
// マルチバイト文字列(CP932)の "あいうえお" をワイド文字列化する
// コードページ値や変換種別タグを指定不要なオーバロード
std::wstring w_aiueo = Encoding::convert("あいうえお");

また、主要な文字コード用にラップ関数が用意されている。

// マルチバイト文字列(CP932)の "あいうえお" をUTF-8化する
std::string u8aiueo = WinEncoding::convertMbcsToUtf8("あいうえお");

文字コード変換における挙動は先述の Windows API に依存する。 変換できない文字が含まれていてもその文字を '?' 等に置換するのみであり、 変換処理を打ち切ることはない。

マルチバイト文字列(CP932)へ変換する場合の特殊処理
このクラスの特殊な動作として、文字コード変換先がマルチバイト文字列(CP932)である場合、 文字コード変換処理を行う前に、いくつかの文字について置換処理を行う。 処理の内容は静的メンバ関数 remapSjisToMbcs に準ずる。
各メンバ関数の引数 remappingSjisToMbcs に false を指定するとこの処理を無効化できる。 引数指定を省略した場合は true を指定したものとして扱われる。
この文字置換処理は、変換元の文字列がシフトJISから変換されていた場合であっても 極力マルチバイト文字列(CP932)へ変換できるようにするためのものであり、 変換先がマルチバイト文字列(CP932)でなければ行われない。 変換先がマルチバイト文字列(CP932)ではない関数についても引数 remappingSjisToMbcs が存在するが、その場合の引数値は単に無視される。

関数詳解

static std::wstring amdaemon::util::WinEncoding::convert ( std::uint32_t  codePage,
const std::string &  src,
bool  remappingSjisToMbcs = true 
)
static

ANSI文字列をワイド文字列に変換する。

引数
[in]codePage変換元のコードページ値。
[in]srcANSI文字列。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
ワイド文字列。

対象のコードページから変換できない文字は代替文字に置き換えられる。

static std::string amdaemon::util::WinEncoding::convert ( std::uint32_t  codePage,
const std::wstring &  src,
bool  remappingSjisToMbcs = true 
)
static

ワイド文字列をANSI文字列に変換する。

引数
[in]codePage変換先のコードページ値。
[in]srcワイド文字列。
[in]remappingSjisToMbcs引数 codePage の値が CodePageMbcs である場合に、 静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
ANSI文字列。

対象のコードページに変換できない文字は代替文字 '?' に置き換えられる。

static std::wstring amdaemon::util::WinEncoding::convert ( const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

マルチバイト文字列(CP932)をワイド文字列に変換する。

引数
[in]srcマルチバイト文字列(CP932)。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
ワイド文字列。

変換できない文字は代替文字に置き換えられる。

static std::string amdaemon::util::WinEncoding::convert ( const std::wstring &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

ワイド文字列をマルチバイト文字列(CP932)に変換する。

引数
[in]srcワイド文字列。
[in]remappingSjisToMbcs静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
マルチバイト文字列(CP932)。

変換できない文字は代替文字 '?' に置き換えられる。

std::wstring amdaemon::util::WinEncoding::convert ( MbcsToWideTag  tag,
const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

マルチバイト文字列(CP932)をワイド文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcマルチバイト文字列(CP932)。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
ワイド文字列。

変換できない文字は代替文字に置き換えられる。

static std::wstring amdaemon::util::WinEncoding::convertMbcsToWide ( const std::string &  src)
inlinestatic

マルチバイト文字列(CP932)をワイド文字列に変換する。

引数
[in]srcマルチバイト文字列(CP932)。
戻り値
ワイド文字列。

変換できない文字は代替文字に置き換えられる。

std::string amdaemon::util::WinEncoding::convert ( WideToMbcsTag  tag,
const std::wstring &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

ワイド文字列をマルチバイト文字列(CP932)に変換する。

引数
[in]tag変換種別タグ。
[in]srcワイド文字列。
[in]remappingSjisToMbcs静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
マルチバイト文字列(CP932)。

変換できない文字は代替文字 '?' に置き換えられる。

static std::string amdaemon::util::WinEncoding::convertWideToMbcs ( const std::wstring &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

ワイド文字列をマルチバイト文字列(CP932)に変換する。

引数
[in]srcワイド文字列。
[in]remappingSjisToMbcs静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
マルチバイト文字列(CP932)。

変換できない文字は代替文字 '?' に置き換えられる。

std::wstring amdaemon::util::WinEncoding::convert ( Utf8ToWideTag  tag,
const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

UTF-8文字列をワイド文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcUTF-8文字列。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
ワイド文字列。

変換できない文字は代替文字に置き換えられる。

static std::wstring amdaemon::util::WinEncoding::convertUtf8ToWide ( const std::string &  src)
inlinestatic

UTF-8文字列をワイド文字列に変換する。

引数
[in]srcUTF-8文字列。
戻り値
ワイド文字列。

変換できない文字は代替文字に置き換えられる。

std::string amdaemon::util::WinEncoding::convert ( WideToUtf8Tag  tag,
const std::wstring &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

ワイド文字列をUTF-8文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcワイド文字列。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
UTF-8文字列。

変換できない文字は代替文字 '?' に置き換えられる。

static std::string amdaemon::util::WinEncoding::convertWideToUtf8 ( const std::wstring &  src)
inlinestatic

ワイド文字列をUTF-8文字列に変換する。

引数
[in]srcワイド文字列。
戻り値
UTF-8文字列。

変換できない文字は代替文字 '?' に置き換えられる。

std::string amdaemon::util::WinEncoding::convert ( MbcsToUtf8Tag  tag,
const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

マルチバイト文字列(CP932)をUTF-8文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcマルチバイト文字列(CP932)。
[in]remappingSjisToMbcsこのオーバロードでは無視される。
戻り値
UTF-8文字列。

変換できない文字は代替文字 '?' に置き換えられる。

static std::string amdaemon::util::WinEncoding::convertMbcsToUtf8 ( const std::string &  src)
inlinestatic

マルチバイト文字列(CP932)をUTF-8文字列に変換する。

引数
[in]srcマルチバイト文字列(CP932)。
戻り値
UTF-8文字列。

変換できない文字は代替文字 '?' に置き換えられる。

std::string amdaemon::util::WinEncoding::convert ( Utf8ToMbcsTag  tag,
const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

UTF-8文字列をマルチバイト文字列(CP932)に変換する。

引数
[in]tag変換種別タグ。
[in]srcUTF-8文字列。
[in]remappingSjisToMbcs静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
マルチバイト文字列(CP932)。

変換できない文字は代替文字 '?' に置き換えられる。

static std::string amdaemon::util::WinEncoding::convertUtf8ToMbcs ( const std::string &  src,
bool  remappingSjisToMbcs = true 
)
inlinestatic

UTF-8文字列をマルチバイト文字列(CP932)に変換する。

引数
[in]srcUTF-8文字列。
[in]remappingSjisToMbcs静的メンバ関数 remapSjisToMbcs 相当の文字置換処理を事前に行うならば true 。
戻り値
マルチバイト文字列(CP932)。

変換できない文字は代替文字 '?' に置き換えられる。

static wchar_t* amdaemon::util::WinEncoding::remapSjisToMbcs ( wchar_t *  target,
std::size_t  length = SIZE_MAX 
)
static

本来のシフトJISとCP932との間でマッピングの異なるワイド文字について、 CP932への文字コード変換用に再マッピングする。

引数
[in,out]target再マッピング対象のワイド文字列。
[in]length再マッピング対象文字数。 既定値 SIZE_MAX の場合は文字 '¥0' の直前までを対象とする。
戻り値
target 自身。
参照
remapSjisToMbcs(std::wstring&, std::size_t)

各文字に対して下記の置換処理を行う。

  • 文字 0x2014 ならば文字 0x2015 (―)に置換する。
  • 文字 0x301C ならば文字 0xFF5E (〜)に置換する。
  • 文字 0x2016 ならば文字 0x2225 (‖)に置換する。
  • 文字 0x2212 ならば文字 0xFF0D (−)に置換する。
  • 文字 0x00A2 ならば文字 0xFFE0 (¢)に置換する。
  • 文字 0x00A3 ならば文字 0xFFE1 (£)に置換する。
  • 文字 0x00AC ならば文字 0xFFE2 (¬)に置換する。

ただし引数 target が nullptr である場合は何もせず nullptr を返す。

static std::wstring& amdaemon::util::WinEncoding::remapSjisToMbcs ( std::wstring &  target,
std::size_t  length = SIZE_MAX 
)
inlinestatic

本来のシフトJISとCP932との間でマッピングの異なるワイド文字について、 CP932への文字コード変換用に再マッピングする。

引数
[in,out]target再マッピング対象のワイド文字列。
[in]length再マッピング対象文字数。 この値と target.size() のうち小さい方の値を用いる。
戻り値
target 自身の参照。
参照
remapSjisToMbcs(wchar_t*, std::size_t)

各文字に対して下記の置換処理を行う。

  • 文字 0x2014 ならば文字 0x2015 (―)に置換する。
  • 文字 0x301C ならば文字 0xFF5E (〜)に置換する。
  • 文字 0x2016 ならば文字 0x2225 (‖)に置換する。
  • 文字 0x2212 ならば文字 0xFF0D (−)に置換する。
  • 文字 0x00A2 ならば文字 0xFFE0 (¢)に置換する。
  • 文字 0x00A3 ならば文字 0xFFE1 (£)に置換する。
  • 文字 0x00AC ならば文字 0xFFE2 (¬)に置換する。

メンバ詳解

const std::uint32_t amdaemon::util::WinEncoding::CodePageMbcs
static

マルチバイト文字列(CP932)のコードページ値 932 。

CP932は、日本語WindowsではシフトJISと呼ばれることも多い文字コードである。 本来のシフトJISより文字数が多く、一部文字の定義が異なる。

const std::uint32_t amdaemon::util::WinEncoding::CodePageUtf8
static

UTF-8のコードページ値 65001 。

const std::uint32_t amdaemon::util::WinEncoding::CodePageAscii
static

ASCIIのコードページ値 1252 。

const MbcsToWideTag amdaemon::util::WinEncoding::MbcsToWide
static

マルチバイト文字列(CP932)からワイド文字列への変換を示すタグ。

const WideToMbcsTag amdaemon::util::WinEncoding::WideToMbcs
static

ワイド文字列からマルチバイト文字列(CP932)への変換を示すタグ。

const Utf8ToWideTag amdaemon::util::WinEncoding::Utf8ToWide
static

UTF-8文字列からワイド文字列への変換を示すタグ。

const WideToUtf8Tag amdaemon::util::WinEncoding::WideToUtf8
static

ワイド文字列からUTF-8文字列への変換を示すタグ。

const MbcsToUtf8Tag amdaemon::util::WinEncoding::MbcsToUtf8
static

マルチバイト文字列(CP932)からUTF-8文字列への変換を示すタグ。

const Utf8ToMbcsTag amdaemon::util::WinEncoding::Utf8ToMbcs
static

UTF-8文字列からマルチバイト文字列(CP932)への変換を示すタグ。


このクラス詳解は次のファイルから抽出されました: