Как я преобразовываю Word умные кавычки и длинные тире в строке?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

25
задан A J 23 January 2016 в 08:56
поделиться

10 ответов

Это походит на проблему Unicode. У Joel Spolsky есть хорошая стартовая точка по теме: http://www.joelonsoftware.com/articles/Unicode.html

15
ответ дан theraccoonbear 28 November 2019 в 21:26
поделиться

mysql база данных использует кодировку UTF-8. Аналогично, страницы HTML, которые отображают содержание, используют UTF-8.

содержание HTML может быть в UTF-8, да, но Вы явно устанавливаете тип контента (кодирование) Ваших страниц HTML (сгенерированный через PHP?) к UTF-8 также? Попытайтесь возвратиться Content-Type заголовок "text/html;charset=utf-8" или добавьте <meta> теги к своим HTML:

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

Тот путь, тип контента данных, отправленных PHP, также будет тем же.

у меня были подобная проблема и добавление эти <meta>, тег работал на меня.

9
ответ дан Ates Goral 28 November 2019 в 21:26
поделиться

Это кажется, что настоящая проблема состоит в том, что Ваша база данных не использует ту же кодировку символов в качестве Вашей страницы (который должен, вероятно, быть UTF-8). В этом случае, если какой-либо пользователь отправит символ неASCII, то Вы будете, вероятно, видеть странные символы в базе данных. Нахождение и фиксация всего нескольких из них (изогнутые кавычки и длинные тире) не собираются решать настоящую проблему.

Вот некоторая информация о миграция Вашей базы данных к другой кодировке символов , по крайней мере, для базы данных MySQL.

4
ответ дан Kip 28 November 2019 в 21:26
поделиться

Это, к сожалению, слишком распространенная проблема, не поддерживаемая очень плохой обработкой наборов символов в PHP.

То, что мы делаем, это заставляем текст через iconv

// Convert input data to UTF8, ignore any odd (MS Word..) chars
// that don't translate
$input = iconv("ISO-8859-1","UTF-8//IGNORE",$input);

Флаг //IGNORE означает, что все, что не может быть переведено, будет выброшено.

Если вы добавите строку // IGNORE, символы, которые не могут быть представлены в целевой кодировке, будут молча отброшены.

2
ответ дан ConroyP 28 November 2019 в 21:26
поделиться

Мы часто использовали бы стандартные строковые функции замены для этого. Даже при том, что природа ASCII/Unicode в том контексте довольно темна, это работает. Просто удостоверьтесь, что Ваш php файл сохранен в правильном формате кодирования, и т.д.

1
ответ дан mspmsp 28 November 2019 в 21:26
поделиться

По моему опыту, легче просто принять умные кавычки и удостовериться, что Вы используете то же кодирование везде. Для запуска добавьте это к тегу form: accept-charset="utf-8"

1
ответ дан Patrick McElhaney 28 November 2019 в 21:26
поделиться

Вы могли попробовать mb_ convert_encoding от ISO-8859-1 до UTF-8.

$str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1');

Это предполагает желание UTF-8, и преобразование может найти разумные замены... в противном случае mb_str_replace или preg_replace их сами.

1
ответ дан Greg 28 November 2019 в 21:26
поделиться

Вы должны быть уверены, что ваше соединение с базой данных настроено на прием и передачу UTF-8 от клиента и к клиенту (в противном случае оно преобразуется в значение «по умолчанию», обычно латинское 1).

На практике это означает выполнение запроса SET NAMES 'utf8';

http://www.phpwact.org/php/i18n/utf-8/mysql

Кроме того, умные кавычки являются частью набора символов windows-1252, а не iso-8859-1 (латиница-1). Не очень актуально для вашей проблемы, но только к вашему сведению. Там же есть символ евро.

1
ответ дан Joeri Sebrechts 28 November 2019 в 21:26
поделиться

Вы должны вручную изменить параметры сортировки отдельных столбцов на UTF8; изменение базы данных в целом не изменит их.

1
ответ дан Peter O. 28 November 2019 в 21:26
поделиться

Возможно, это не лучшее решение , но я бы попробовал проверить, чтобы увидеть, что видит PHP. Допустим, он видит «-» (есть несколько других возможностей, например «» или «# 8220;»). Затем сделайте str_replace, чтобы избавиться от всех этих и заменить их обычными кавычками, прежде чем помещать ответ в базу данных.

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

0
ответ дан Domenic 28 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

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