17

What does the \x1a character mean and why does mysql_real_escape_string escape it?

From the documentation:

mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

A ASCII Characters reference describes it as Substitute character, but this doesn't say much.

Emanuil Rusev
  • 33,269
  • 52
  • 129
  • 197

5 Answers5

13

It's a Unicode escape sequence, in hexadecimal (base 16). \x1a is the "substitute" character.

See also: https://en.wikipedia.org/wiki/Substitute_character


Why does mysql_real_escape_string escape it?

According to the documentation,

Strictly speaking, MySQL requires only that backslash and the quote character used to quote the string in the query be escaped. mysql_real_escape_string() quotes the other characters to make them easier to read in log files.

Mr.Z
  • 462
  • 5
  • 15
Matt Ball
  • 344,413
  • 96
  • 627
  • 693
12

\x1A is CTRL+Z control character. It is also EOF marker.

Ziumin
  • 4,750
  • 1
  • 25
  • 34
4

\x1a is a SUB control character, used to mark end of a file (EOF).

keeri
  • 721
  • 2
  • 13
  • 19
2

It is a hexadecimal escape sequence for the SUB character.

Niet the Dark Absol
  • 311,322
  • 76
  • 447
  • 566
0

This is is because of an empty line et the eof file the program try to read the values in the empty line and read \x1a

Nelu
  • 141
  • 1
  • 6