Π Π°Π±ΠΎΡ‚Π° с тСкстом Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых вострСбованных. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π·Π°Π΄Π°Ρ‡Π° каТСтся Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с нюансами: ΠΎΡ‚ простого копирования символа Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ формирования строк с экранированиСм. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° услоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… (ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€, 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, внСшниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (1Π‘ 8.3, 1Π‘ 8.2) ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

ОсобСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° Ρ‚Π΅ΠΌΠ° для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с запросами, ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Π³Π΄Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для оформлСния Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ², Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ условий. Ошибка Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ символа ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ синтаксичСским ошибкам Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ искаТСнию Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всС сцСнарии β€” ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ…, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΈ способов ΠΈΡ… ΠΎΠ±Ρ…ΠΎΠ΄Π°.

β€”β€”β€”

1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ способы Π²Π²ΠΎΠ΄Π° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² 1Π‘ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ввСсти ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² ΠΏΠΎΠ»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, справочника ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Windows. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв достаточно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш.

Для прямых ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ («») Π² русской раскладкС:

  • πŸ”Ή НаТмитС Shift + 2 (вСрхняя ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Β«)
  • πŸ”Ή НаТмитС Shift + Π­ (ниТняя ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Β»)

Для ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ (β€˜β€™) ΠΈΠ»ΠΈ англйиских ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ (""):

  • πŸ”Ή ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΡƒΡŽ раскладку ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Shift + ' (вСрхняя одинарная)
  • πŸ”Ή Для Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… английских ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Shift + "

Если ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° β€” Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Courier New) ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Β«ΡƒΠΌΠ½Ρ‹Π΅Β» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π° прямыС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ полях Π²Π²ΠΎΠ΄Π° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° блокируСтся вставка ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Ρ‡Π΅Ρ€Π΅Π· Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ символы Ρ‡Π΅Ρ€Π΅Π· Π’Π°Π±Π»ΠΈΡ†Ρƒ символов Windows (Win + .).
πŸ“Š Какой способ Π²Π²ΠΎΠ΄Π° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠšΠΎΠΏΠΈΡ€ΡƒΡŽ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника
ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ
Π’Π°Π±Π»ΠΈΡ†Π° символов Windows
Π”Ρ€ΡƒΠ³ΠΎΠΉ способ

2. Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΊΠΎΠ΄Π΅ 1Π‘: синтаксис ΠΈ экранированиС

Π’ встроСнном языкС 1Π‘ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ особого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обозначСния строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Если Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки, Π΅Ρ‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ синтаксиса:

// Π’Ρ‹Π²ΠΎΠ΄ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ""ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ"" Π² строкС");

// Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (апострофа)

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ''ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ'' ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ");

// ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ

| НаимСнованиС КАК ""НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°""

|Π˜Π—

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура";

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  • πŸ”Ή Π’ запросах 1Π‘ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Π’ ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»Π΅ΠΉ (послС КАК) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ прямыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Π΅Π· экранирования.
  • πŸ”Ή Π’ 1Π‘ 8.3.20+ поддСрТиваСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис с использованиСм | для многострочных строк, Π³Π΄Π΅ экранированиС Π½Π΅ трСбуСтся.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ JSON ΠΈΠ»ΠΈ XML Π² 1Π‘, экранированиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандартам этих Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². НапримСр, Π² JSON Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° \", Π° Π½Π΅ ΡƒΠ΄Π²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Π£Π΄Π²ΠΎΠ΅Π½Ρ‹ Π»ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²?|ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹ Π»ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»Π΅ΠΉ запроса?|Π‘ΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ‚ Π»ΠΈ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ с трСбованиями Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (JSON/XML)?|ВСстировался Π»ΠΈ ΠΊΠΎΠ΄ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹?-->

3. ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для оформлСния Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «НаимСнованиС», β€œΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎβ€). Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ:

  • πŸ”Ή Π’ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандартам оформлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π“ΠžΠ‘Π’ Π  7.0.97-2016 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Ρ‘Π»ΠΎΡ‡ΠΊΠΈΒ» для русских тСкстов).
  • πŸ”Ή Π¨Ρ€ΠΈΡ„Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ прямыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (") Π½Π° Β«ΡƒΠΌΠ½Ρ‹Π΅Β» («»), Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ искаТСниям ΠΏΡ€ΠΈ экспортС Π² PDF.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ настройки ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² конструкторС ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкстовый элСмСнт с Π½ΡƒΠΆΠ½Ρ‹ΠΌ символом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«).
  3. УстановитС ΡˆΡ€ΠΈΡ„Ρ‚, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Β«ΡƒΠΌΠ½Ρ‹Π΅Β» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Times New Roman ΠΈΠ»ΠΈ Arial).
  4. ΠŸΡ€ΠΈ нСобходимости зафиксируйтС символ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ΠœΠ°ΠΊΠ΅Ρ‚ΠΎΠ².Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ°", "Β«").

Если ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ настройки ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π° (ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ замСняСт символы).
  2. ЭкспортируйтС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² PDF ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, U+00AB для Β« ΠΈ U+00BB для Β»), Ссли ΡˆΡ€ΠΈΡ„Ρ‚ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.
ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² PDF ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ?

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ Π½Π΅ содСрТит Π³Π»ΠΈΡ„ΠΎΠ² для Β«ΡƒΠΌΠ½Ρ‹Ρ…Β» ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. РСшСниС:

1. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚ Π½Π° стандартный (Arial, Times New Roman).

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ прямыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ("") вмСсто «».

3. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ символы ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΊΠ°ΠΊ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Ссли ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ сохранСниС оформлСния).

4. Π Π°Π±ΠΎΡ‚Π° с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π² запросах ΠΈ SQL

Π’ запросах 1Π‘ ΠΈ SQL-выраТСниях ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ β€” ΠΎΠ½ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Ошибки здСсь приводят ΠΊ синтаксичСским ошибкам ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π² запросС 1Π‘ Π“Π”Π• НаимСнованиС = "Π’ΠΎΠ²Π°Ρ€ ""ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ"" " Π£Π΄Π²ΠΎΠ΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ
Имя поля с ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ ВЫБРАВЬ НаимСнованиС КАК "НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°" Π‘Π΅Π· экранирования
SQL-запрос ΠΊ внСшнСй Π‘Π” ВЫБРАВЬ &НаимСнованиС КАК "Name" Зависит ΠΎΡ‚ Π‘Π£Π‘Π” (Π² MS SQL β€” ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅, Π² PostgreSQL β€” \)
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π”Π°Ρ‚Π°", '2026-01-01') ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для Π΄Π°Ρ‚

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • πŸ”Ή Ошибка: Ошибка ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса: НСоТиданный символ '"'
    ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: НСудвоСнная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°.
    РСшСниС: Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "Π’ΠΎΠ²Π°Ρ€ "ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ"" Π½Π° "Π’ΠΎΠ²Π°Ρ€ ""ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ"" ".
  • πŸ”Ή Ошибка: Имя поля с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π½Π΅ распознаСтся.
    ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π›ΠΈΡˆΠ½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² ΠΈΠΌΠ΅Π½ΠΈ поля послС КАК.
    РСшСниС: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ КАК "НаимСнованиС", Π° Π½Π΅ КАК ""НаимСнованиС"".
ВСкстЗапроса = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстЗапроса, """", """""");

Π­Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ всС ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π° ΡƒΠ΄Π²ΠΎΠ΅Π½Π½Ρ‹Π΅.-->

5. ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² JSON ΠΈ XML: особСнности экранирования

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· JSON ΠΈΠ»ΠΈ XML ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ экранирования, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ» 1Π‘. Π­Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ с внСшними систСмами, REST API ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвисами.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ²:

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π² 1Π‘
JSON " \" ВСкстJSON = Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("""НаимСнованиС"": ""%1""", Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(НаимСнованиС, """", ""\""));
XML " ΠΈΠ»ΠΈ ' " ΠΈΠ»ΠΈ ' ВСкстXML = Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("<Name>%1</Name>", Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(НаимСнованиС, """", """));
1Π‘ (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ) " "" Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ВСкст ""с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ""");

Для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ экранирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

// Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для JSON

Ѐункция Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ”Π»ΡJSON(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, """", ""\""), "\", ""\\");

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

// Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для XML

Ѐункция Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ”Π»ΡXML(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, """", """);

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с HTTP-БСрвисами 1Π‘ ΠΈΠ»ΠΈ REST API Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ экранированиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС 500 Internal Server Error. ВсСгда провСряйтС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ JSON/XML Ρ‡Π΅Ρ€Π΅Π· инструмСнты Π²Ρ€ΠΎΠ΄Π΅ Postman ΠΈΠ»ΠΈ JSONLint.

6. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ сцСнарии: динамичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ

Π’ слоТных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ динамичСских запросов ΠΈΠ»ΠΈ SQL-скриптов) ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ источником Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡƒΠ»ΠΎΠ²ΠΈΠΌΡ‹Ρ… ошибок. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π—Π°Π΄Π°Ρ‡Π° 1: Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ для запроса.

РСшСниС β€” использованиС Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() с экранированиСм:

БписокЗначСний = Новый Массив;

БписокЗначСний.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€ ""А""");

БписокЗначСний.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€ ""Π‘""");

// Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ строку для запроса

ВСкстУсловия = "Π“Π”Π• НаимСнованиС Π’ ('" + Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(БписокЗначСний, "', '") + "')";

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π“Π”Π• НаимСнованиС Π’ ('Π’ΠΎΠ²Π°Ρ€ ""А""', 'Π’ΠΎΠ²Π°Ρ€ ""Π‘""')

Π—Π°Π΄Π°Ρ‡Π° 2: ГСнСрация SQL-скрипта с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… (для PostgreSQL).

РСшСниС β€” ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π½ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ с экранированиСм ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…:

Ѐункция ΠžΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒΠ˜ΠΌΡΠ”Π»ΡSQL(ИмяПоля)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ """" + Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ИмяПоля, """", """""") + """";

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ИмяПоля = "НаимСнованиС""Π’ΠΎΠ²Π°Ρ€Π°""";

SQLВСкст = "SELECT " + ΠžΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒΠ˜ΠΌΡΠ”Π»ΡSQL(ИмяПоля) + " FROM table";

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: SELECT "НаимСнованиС""Π’ΠΎΠ²Π°Ρ€Π°""" FROM table

Π—Π°Π΄Π°Ρ‡Π° 3: Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… шаблонов).

РСшСниС β€” Π·Π°ΠΌΠ΅Π½Π° Π½Π° HTML-сущности:

ВСкстHTML = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚, """", """);

ВСкстHTML = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстHTML, "Β«", "«");

ВСкстHTML = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстHTML, "Β»", "»");

πŸ’‘

ΠŸΡ€ΠΈ динамичСском Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ строк с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ экранирования. Π ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ символов Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ошибками ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходных Π΄Π°Π½Π½Ρ‹Ρ….

7. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… диагностика

Ошибки с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ: ΠΎΡ‚ синтаксичСских ошибок ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄ΠΎ искаТСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС случаи ΠΈ способы ΠΈΡ… устранСния.

Ошибка 1: Ошибка компиляции: НСоТиданный ΠΊΠΎΠ½Π΅Ρ† строки

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: НСзакрытая ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π² строковом Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅.

Диагностика:

  • πŸ”Ή ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² строкС.
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ подсвСтку синтаксиса Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ β€” Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ строки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ красным.

Ошибка 2: ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ? ΠΈΠ»ΠΈ β–‘ Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • πŸ”Ή НСподдСрТиваСмый ΡˆΡ€ΠΈΡ„Ρ‚: Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚ Π½Π° Arial ΠΈΠ»ΠΈ Times New Roman.
  • πŸ”Ή ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°: УстановитС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8 ΠΏΡ€ΠΈ экспортС Π² PDF.
  • πŸ”Ή ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°: ЭкспортируйтС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² XPS ΠΈΠ»ΠΈ PDF для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Ошибка 3: Π’ запросС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ условиС с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

ВСкстЗапроса = "ВЫБРАВЬ * Π˜Π— Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ Π“Π”Π• ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ = "Π‘Ρ€ΠΎΡ‡Π½ΠΎ!"";

// Ошибка: ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ "Π‘Ρ€ΠΎΡ‡Π½ΠΎ!" Π½Π΅ ΡƒΠ΄Π²ΠΎΠ΅Π½Π°.

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

ВСкстЗапроса = "ВЫБРАВЬ * Π˜Π— Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ Π“Π”Π• ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ = ""Π‘Ρ€ΠΎΡ‡Π½ΠΎ!""";

Ошибка 4: ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ JSON парсится Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: НСэкранированныС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² значСниях.

РСшСниС: ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() для экранирования ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JSON:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "Π’ΠΎΠ²Π°Ρ€ ""ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ"" класс";

ЗначСниСДляJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, """", ""\"");

Как Π½Π°ΠΉΡ‚ΠΈ Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² большом ΠΌΠΎΠ΄ΡƒΠ»Π΅?

1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π² тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Notepad++).

2. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ подсвСтку синтаксиса для языка 1Π‘.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ поиск ΠΏΠΎ символу " ΠΈ провСряйтС ΠΏΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

4. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ 1Π‘ ошибка ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° строку с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β€” Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ с Π½Π΅Ρ‘.

8. Автоматизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ экранирования, создайтС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сцСнариСв.

Ѐункция 1: Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² 1Π‘.

Ѐункция Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ”Π»Ρ1Π‘(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Экспорт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, """", """""");

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция 2: Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для JSON.

Ѐункция Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ”Π»ΡJSON(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Экспорт

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, """", ""\"");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "\", ""\\");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "/", ""\/");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Chr(8), ""\b""); // Backspace

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Chr(12), ""\f""); // Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π°Ρ табуляция

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Chr(10), ""\n""); // ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Chr(13), ""\r""); // Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Chr(9), ""\t""); // Вабуляция

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция 3: Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ для ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ (Π·Π°ΠΌΠ΅Π½Π° прямых ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π° Β«Ρ‘Π»ΠΎΡ‡ΠΊΠΈΒ»).

Ѐункция Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠΠ°Π•Π»ΠΎΡ‡ΠΊΠΈ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Экспорт

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, """", "«»");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "'", "β€˜β€™");

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности экранирования Π² динамичСски сформированном запросС.

Ѐункция ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΠ­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Π’Π—Π°ΠΏΡ€ΠΎΡΠ΅(ВСкстЗапроса) Экспорт

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΡƒΠ΄Π²ΠΎΠ΅Π½Ρ‹

Если БтрЧислоВхоТдСний(ВСкстЗапроса, """") Mod 2 <> 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ; // НСчСтноС количСство ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ β€” ошибка

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ строк (ΠΊΡ€ΠΎΠΌΠ΅ экранированных)

Если БтрНайти(ВСкстЗапроса, """") > 0 Π’ΠΎΠ³Π΄Π°

// Π˜Ρ‰Π΅ΠΌ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (Π½Π΅ экранированная)

Если БтрНайти(ВСкстЗапроса, """") = БтрНайти(ВСкстЗапроса, """""") Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию:

  • πŸ”Ή РазмСститС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ с ΠΏΡ€Π°Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Экспорт.
  • πŸ”Ή Для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сцСнариСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ JSON) создайтС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ всС поля.
  • πŸ”Ή ВСстируйтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях: пустыС строки, строки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ провСряйтС ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ своих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ экранирования. НапримСр, Π² 1Π‘ 8.3.20 появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° многострочных строк с |, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ.

β€”β€”β€”

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π² 1Π‘

Как Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° 1Π‘, Ссли ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Если Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ (Shift + Π­ для Β«).
  • Π’Π°Π±Π»ΠΈΡ†Ρƒ символов Windows (Win + .).
  • Вставку Ρ‡Π΅Ρ€Π΅Π· макрос (Ссли Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ администрированиСм).

Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° толстый ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π³Π΄Π΅ ограничСния мягчС.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΈ вопроса?

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

  • Π¨Ρ€ΠΈΡ„Ρ‚ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° (Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Unicode).
  • ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈ экспортС Π² PDF (установитС UTF-8).
  • Настройки ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π° (Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ символы).

Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° остаСтся, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Β«ΡƒΠΌΠ½Ρ‹Π΅Β» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ («») Π½Π° прямыС ("").

Как ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ SQL-запросС для внСшнСй Π‘Π”?

Бпособ экранирования зависит ΠΎΡ‚ Π‘Π£Π‘Π”:

  • MS SQL: Π£Π΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ("").
  • PostgreSQL: Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм (\").
  • MySQL: Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм ΠΈΠ»ΠΈ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ (зависит ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° ANSI_QUOTES).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для MS SQL:

SQLВСкст = "INSERT INTO Table (Name) VALUES ('" + Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Имя, "'", "''") + "')";
МоТно Π»ΠΈ Π² 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ вмСсто Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…?

НСт, встроСнный язык 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для обозначСния строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (апострофы) Π² ΠΊΠΎΠ΄Π΅ 1Π‘ Π½Π΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ строки, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ:

  • Π’Π½ΡƒΡ‚Ρ€ΠΈ строк для обозначСния символов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Ошибка: 'НСдостаточно ΠΏΡ€Π°Π²'").
  • Π’ SQL-запросах ΠΊ внСшним Π‘Π” (Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ стандарт для строк).
Как вывСсти ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² сообщСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‡Π΅Ρ€Π΅Π· Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ()?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ:

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ""ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ"" Π² сообщСнии ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ.");

Для многострочных сообщСний ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ | (Π² 1Π‘ 8.3.20+):

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(|

|ВСкст сообщСния с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ: "ΠΏΡ€ΠΈΠΌΠ΅Ρ€".

|Вторая строка: 'Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€'.

|);