PHP Conference Nagoya 2025

mysqli::get_charset

mysqli_get_charset

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

mysqli::get_charset -- mysqli_get_charset文字セットオブジェクトを返す

説明

オブジェクト指向型

public mysqli::get_charset(): ?object

手続き型

mysqli_get_charset(mysqli $mysql): ?object

文字セットオブジェクトを返します。 これは、現在アクティブな文字セットについてのプロパティを提供します。

パラメータ

link

手続き型のみ: mysqli_connect() あるいは mysqli_init() が返す mysqliオブジェクト。

戻り値

この関数は、以下のプロパティを持つ文字セットオブジェクトを返します。

charset

文字セット名

collation

照合規則名

dir

文字セットの設定を読み込むディレクトリ。組み込みの文字セットについては ""

min_length

最小の文字の長さ (バイト数)

max_length

最大の文字の長さ (バイト数)

number

内部文字セット番号

state

文字セットの状態

例1 mysqli::get_charset() の例

オブジェクト指向型

<?php
$db
= mysqli_init();
$db->real_connect("localhost","root","","test");
var_dump($db->get_charset());
?>

手続き型

<?php
$db
= mysqli_init();
mysqli_real_connect($db, "localhost","root","","test");
var_dump(mysqli_get_charset($db));
?>

上の例の出力は以下となります。

object(stdClass)#2 (7) {
  ["charset"]=>
  string(6) "latin1"
  ["collation"]=>
  string(17) "latin1_swedish_ci"
  ["dir"]=>
  string(0) ""
  ["min_length"]=>
  int(1)
  ["max_length"]=>
  int(1)
  ["number"]=>
  int(8)
  ["state"]=>
  int(801)
}

参考

add a note

User Contributed Notes 1 note

up
1
jab_creations at yahoo dot com
4 months ago
On a new server this function was incorrectly returning "utf8mb4_general_ci".

I started a bug report and it turns out that:

1. The PHP team maintained an internal static list.
2. They ultimately decided to not be bothered to update that internal static list.

So as someone with the intentions on knowing exactly what is going on (e.g. Paris Michigan !== Paris France) I now reject the use of this function.

I'm not sure about other databases though for MariaDB you can determine the many character sets using the following SQL query:

SELECT VARIABLE_NAME, GLOBAL_VALUE, DEFAULT_VALUE
FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES
WHERE VARIABLE_NAME LIKE '%CHAR%';
To Top