Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2018, 22:57
Новичок на форуме
Отправить личное сообщение для sasha281215 Посмотреть профиль Найти все сообщения от sasha281215
 
Регистрация: 06.07.2018
Сообщений: 4

Кракозябры в JS
Помогите, есть json, я изменил строку, добавив русский
{
	"spawn": {
		"x": 200,
		"y": 150
	},
	"objects": [{
		"type": 0,
		"x": 155,
		"y": 50,
		"textHeight": 40,
		"isCentered": false,
		"text": "Привет"
	}, {
		"type": 2,
		"x": 300,
		"y": 170,
		"width": 50,
		"height": 50,
		"dst": "classic-2"
	}],
	"lvlname": "classic-1"
}
но теперь Привет отображается кракозябрами. Стоит кодировка UTF-8 без bom. Попробовал изменить на просто UTF-8, но при запуске node.js-ом js скрипта, он выдает ошибку
SyntaxError: Unexpected token ? in JSON at position 0
    at JSON.parse (<anonymous>)
    at loadLevel (C:\Users\Alexander\Downloads\server-cursors.io\LevelManager.js
:32:20)
    at Object.loadLevels (C:\Users\Alexander\Downloads\server-cursors.io\LevelMa
nager.js:16:40)
    at loadLevels (C:\Users\Alexander\Downloads\server-cursors.io\main.js:31:15)

    at Object.<anonymous> (C:\Users\Alexander\Downloads\server-cursors.io\main.j
s:45:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

Ошибку выдает на эти строки
var lvldata = fs.readFileSync(fn,{encoding: "utf8"});
	var ld_obj = JSON.parse(lvldata);

Сама функция
function loadLevel(fn) {
	var lvldata = fs.readFileSync(fn,{encoding: "utf8"});
	var ld_obj = JSON.parse(lvldata);

	levels[ld_obj.lvlname] = ld_obj;
	levelNames.push(ld_obj.lvlname);
	clog("loaded level??: "+ld_obj.lvlname);
	}
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2018, 00:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В кодировке нельзя указать с ВОМ она или нет, это файл скрипта нужно сохранить в UTF и без ВОМ.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2018, 11:05
Новичок на форуме
Отправить личное сообщение для sasha281215 Посмотреть профиль Найти все сообщения от sasha281215
 
Регистрация: 06.07.2018
Сообщений: 4

Сообщение от laimas Посмотреть сообщение
В кодировке нельзя указать с ВОМ она или нет, это файл скрипта нужно сохранить в UTF и без ВОМ.
Да, но тогда текст "Привет" с кракозябрами.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2018, 11:31
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Кодировка UTF-8 без BOM работает с кириллицей.
Вы наверно неправильно кодировку меняете.
Сначала Преобразовать в UTF-8 без BOM и сохранить, затем исправить текст на Привет.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2018, 13:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Неправильная кодировка может быть установлена в:
1. файле с json
2. в исполняемом js файле сервера
3. в консоли
4. где-то в конфигурации ноды
по убыванию вероятности.)
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2018, 13:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
Кодировка UTF-8 без BOM работает с кириллицей.
А с ВОМ ни в какую?
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2018, 13:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

sasha281215,
если что-то "зябликами", значит "что-то из" не в той кодировке. То есть все файлы которые используют текст (именно все, даже CSS если в них задается текст) должны быть сохранены в одной кодировке. Для того, чтобы не было накладок, сервер также должен быть настроен на эту кодировку по умолчанию, если он передает такой заголовок.

Иметь иную кодировку в пределах страницы можно только в iframe. Что же касается BOM, то сохранять файлы нужно без него (выбрать это в редакторе по умолчанию), в противном случае могут быть "непонятки" в отображении страниц (лишнее или портит верстку), и ошибки в случае JSON.

Последний раз редактировалось laimas, 07.07.2018 в 13:12.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
BackEnd/FrontEnd Developer (Native JS) Abab Работа 0 25.12.2016 10:56
JS <-> Server Js. Severtain Общие вопросы Javascript 1 05.11.2011 15:36
JS Coaching для стартапа OlgaAyva Работа 12 27.09.2011 22:18
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28