charset в MySQL

Я разрабатываю блог в MySQL, все будет на английском языке и будет содержать некоторые специальные символы, такие как

! `, ~, @ # $% ^ & * () _ + = – [] {}; '\:.?" |, / <> / * – +

Q1-> Какую кодировку я должен использовать [ и почему ]?
Q2-> в чем разница между UTF-8/16/32 и Latin1?
Q3-> Использует ли UTF-8 меньше места, чем те?
Q4-> Какую кодировку использовать для поддержки бенгали?

[Когда я хочу сохранить 'в моей БД, он конвертирует его в â € ~, что действительно скучно: x]

MySQL 5.5.8 и PHP 5.3.3

1: UTF-8, так как любой персонаж, которого вы заботитесь, будет принимать только один байт, плюс его можно расширить, если в будущем у вас будут символы, которые не найдены в этом.

2 + 3: «Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о юникоде и наборах символов (никаких оправданий!)»

4: UTF-8.

Вы можете использовать charset = ISO-8859-1, если у вас есть английский и те символы, которые вы упомянули. Если вы собираетесь использовать бенгальский, вам нужен UTF-8.

define('SQL_HOST','databasehost');
define('SQL_USER','user');
define('SQL_PASS','password');
define('SQL_DB','databasename');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die('Could not connect to the database; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Could not select database; ' . mysql_error());
mysql_query("SET NAMES 'utf8'");

Использование mysql_query("SET NAMES 'utf8'"); заботится о UTF-8. Я думаю, что это будет работать на бенгали, так как в моем случае это работало для Деванагари.

Не забудьте указать ту же кодировку в meta

< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />