According to the MySQL Doc, I think VARCHAR and TEXT are stored in the same way in MySQL, because in the introduction to InnoDB Row Formats, both VARCHAR and TEXT are treated as the variable-length column values.
However, the MySQL doc also says "The internal representation of a MySQL table has a maximum row size limit of 65,535 bytes, even if the storage engine is capable of supporting larger rows. BLOB and TEXT columns only contribute 9 to 12 bytes toward the row size limit because their contents are stored separately from the rest of the row." (from here). According to this sentence, the VARCHAR and TEXT should be stored differently in MySQL, because VARCHAR(65535) contributes more than 12 bytes toward the row size.
So, which one is right? Are VARCHAR and TEXT stored differently or the same in MySQL?
About this question, I saw some discussions in the answer posted by Code Commander below question Difference between VARCHAR and TEXT in MySQL. However, those discussions did not answer my question.