Можно ли использовать Unicode «argv»?

$res = $DB->query('SELECT COUNT(*) FROM table');
$num_rows = $res->fetchColumn();

или

$res = $DB->prepare('SELECT COUNT(*) FROM table');
$res->execute();
$num_rows = $res->fetchColumn();

Вы можете использовать это, чтобы спросить, существуют или нет данные:

$res = $DB->query('SELECT COUNT(*) FROM table');
$data_exists = ($res->fetchColumn() > 0) ? true : false;

Или с вашими переменными:

$res = $DB->query('SELECT COUNT(*) FROM table');
$message = ($res->fetchColumn() > 0) ? array('status' => 'ok') : array('status' => 'error');
13
задан John 3 November 2009 в 00:20
поделиться

4 ответа

В общем, нет. Это будет зависеть от O / S, но стандарт C говорит, что аргументы для main () должны быть main (int argc, char ** argv) или эквивалентными, поэтому, если char и wchar_t не являются одним и тем же базовым типом , вы не можете этого сделать.

Сказав это, вы можете получить строки аргументов UTF-8 в программе, преобразовать их в UTF-16 или UTF-32, а затем продолжить жизнь.

На a Mac (10.5.8, Leopard), я получил:

Osiris JL: echo "ï€" | odx
0x0000: C3 AF E2 82 AC 0A                                 ......
0x0006:
Osiris JL: 

Это все в кодировке UTF-8. (odx - шестнадцатеричная программа дампа).

См. также: Почему используется кодировка UTF-8 при взаимодействии со средой UNIX / Linux

11
ответ дан 1 December 2019 в 07:27
поделиться

Переносимый код его не поддерживает. Windows (например) поддерживает использование wmain вместо main , и в этом случае argv передается как широкие символы.

10
ответ дан 1 December 2019 в 07:27
поделиться

В Windows вы можете использовать tchar.h и _tmain, которые будут преобразованы в wmain, если символ _UNICODE определен во время компиляции, или main в противном случае. TCHAR * argv [] будет аналогичным образом расширен до WCHAR * argv [], если определен юникод, и до char * argv [], если нет.

Если вы хотите, чтобы ваш основной метод работал кросс-платформенным, вы можете определить свои собственные макросы с тем же эффектом.

TCHAR.h содержит ряд удобных макросов для преобразования между wchar и char.

2
ответ дан 1 December 2019 в 07:27
поделиться

В любом случае в Windows у вас может быть wmain () для сборок UNICODE. Но не портативный. Я не знаю, предоставляют ли платформы GCC или Unix / Linux что-нибудь подобное.

3
ответ дан 1 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: