Обнаружьте кодирование файла в PHP

_ = yield i 
yield _

Сначала это yield s значение, на которое ссылается i, например. 1. Затем он возвращает значение, возвращаемое операцией yield, которая является None. Это делается на каждой итерации цикла.

for i in x:
    _ = yield i

Это просто yield s значение, на которое ссылается i, например. 1, затем переходит к следующей итерации цикла, создавая 2, затем 3.

В отличие от return ключевое слово yield может использоваться в выражении:

x = return 0 # SyntaxError
x = yield 0 # perfectly fine

Теперь, когда интерпретатор увидит yield, он произведет указанное значение. Однако, когда он это делает, эта операция возвращает значение None, так же как mylist.append(0) или print('hello') будет return значением None. Когда вы присваиваете этот результат ссылке, например _, вы сохраняете это None.

Итак, в первом фрагменте вы получаете объект, затем вы сохраняете «результат», этой операции yield, которая является None, а затем вы yield, что None. Во втором фрагменте вы даете объект, затем вы сохраняете «результат» этой операции yield, но вы never yield, которые вызывают , поэтому None не отображается на выходе .

Обратите внимание, что yield не всегда будет возвращать None - это именно то, что вы отправили генератору с помощью send(). Поскольку в этом случае ничего не было, вы получите None. См. этот ответ для получения дополнительной информации о send().

24
задан nickf 3 February 2009 в 00:14
поделиться

2 ответа

Попытайтесь использовать mb_detect_encoding функция . Эта функция исследует Вашу строку и попытку "предположить", каково ее кодирование. Можно затем преобразовать его, как желаемый. Как brulak предложил , однако, Вы - вероятно, более обеспеченное преобразование к UTF-8, а не от , для сохранения данных, которые Вы передаете.

29
ответ дан Community 16 October 2019 в 07:52
поделиться

Как Вы собираетесь обработать символы неASCII от UTF-8 или 16 или 32 файлов?

я спрашиваю, потому что я думаю, что у Вас могут быть вопросы проектирования здесь.

я преобразовал бы Ваш выходной файл в UTF-8 (или 16 или 32) вместо наоборот.

Затем у Вас не будет этой проблемы.

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

Обнаруживающее многобайтовое кодирование

Фигура, в чем находится кодирование Вашего исходного файла, затем преобразовывает его в UTF-8, и необходимо быть хороши пойти.

1
ответ дан Peter Mortensen 16 October 2019 в 07:52
поделиться
Другие вопросы по тегам:

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