Эти строки по существу одинаковы: правый одиночный кавычек является символом Юникода 2019, который может быть представлен как \u2019
.
Когда вы запускаете скрипт в своем терминале, ваш терминал отображает символ Unicode, который вы ожидаете увидеть. Вы можете проверить это, запустив этот пример в терминальной оболочке:
$ ruby -e 'puts "We\u2019re"'
We’re
Попробуйте выполнить команду на терминале и скопировать выходной файл в безопасном месте. Затем попробуйте запустить Xocde Run Script. Сравните эти два файла, например так:
$ diff output1.yaml output2.yaml && echo "The files are equal"
Новая информация от оригинального плаката:
Вот разница между двумя сгенерированных файлов:
< " Peace and love, y\u2019all.\n"
> " Peace and love, y’all.\n"
< "\n \u2022\t Some text. "
> "\n •\t Some text."
Это выглядит для меня, как будто у вас проблема с кодировкой языка: кодировка языка, которую вы используете при запуске скрипта в вашем терминале, может отличаться от кодировки языка, используемой XCode (или/bin/sh).
Вы можете увидеть, что язык, кодирующий ваш терминал использует, запустив это:
$ env | grep '^LANG'
Например, я использую UTF-8:
LANG=en_US.UTF-8
Чтобы выяснить, что с помощью XCode, создать одна строка сценария, такие как my_test.sh
так:
env | grep '^\(LANG\|LC_\)'
Затем добавьте его в XCode Run Script , Получаете ли вы другой результат, когда XCode запускает скрипт?
Совершенно другой предмет, который нужно попробовать - это изменить сценарий запуска из оболочки в Ruby, как это.
Первая цифра, где Рубин:
$ command -v ruby
Шахта:
/usr/bin/ruby
Затем измените XCode Run Script из этого:
/bin/sh ruby my_script.rb
Для этого:
/usr/bin/ruby myscript.rb
Эй, @joelparkerhenderson! Спасибо за ответ. Вот различие между двумя сгенерированными файлами. Я мог понять, что он меняет только символы • и « 292c292 <« Мир и любовь, y \ u2019all. \ N "; --- > «Мир и любовь, y'all. \ N»; 248c248 <"\ n \ u2022 \ t Некоторый текст."; --- > "\ n • \ t Некоторый текст."; –