爆火影片《欢迎来龙餐馆》里,餐厅经理马俊生为拯救无辜孩童,故意用发芽土豆做了一顿土豆炖牛肉——借土豆轻微的毒性制造集体食物中毒假象,以此拖延极端分子的计划,也为孩子们换来一线生机。俊生之死让无数观众泪洒影院,也让更多人懂得和平的珍贵。走出电影院,看到万家灯火、点点星光,更觉好好吃饭来之不易。
影片之外,“发芽土豆有毒不能吃”也是中国人共同的常识。我们从小被科普:土豆发芽就含龙葵素,不能吃。可在坐在家里看世界的当下,刷短视频时常见到,在西北黄土高原、云贵川渝的高山农村,土豆仍是当地居民的主粮之一,各种各样的土豆吃法甚至伴随一整个冬天。人们从房梁、地窖、土窖里取出存放数月的土豆:表皮干瘪皱缩,长出十几厘米的白色长芽,却没有明显变绿。当地人削掉芽眼、厚削外皮,炖煮之后照常食用,也没见急性中毒。每条视频下总有评论质疑:“不是说发芽土豆不能吃吗?”随后又有当地人现身说法:“世世代代都这么吃,没事。”
同样是发芽土豆,为什么现实里出现两种截然不同的结果?是老一辈“以身试毒”,还是我们对发芽土豆的认知被简化了?发芽土豆到底能不能吃?
先说结论:发芽土豆不建议吃,出现明显发芽、变绿、腐烂或苦味的,应当整颗丢弃;老人、儿童、孕妇应尽量完全避开。至于地窖土豆“吃了没事”,其实是环境、品种、处理方式与幸存者偏差共同作用的结果,属于传统经验,不能当作家庭食用标准。
一、发芽土豆的有毒物质是什么?
土豆中的毒素其化学本质是糖苷生物碱(GA),主要由α‑solanine(α‑茄碱 ,也就是我们常说的龙葵素)、α‑chaconine(α‑卡茄碱)两大类合称为总糖苷生物碱 Total glycoalkaloids, TGA,二者占总毒素 90% 以上。
欧洲食品安全局 EFSA 给出食用安全阈值:鲜重总糖苷生物碱<200 mg/kg 为相对安全,超过该值存在中毒风险。含量超过 200 mg/kg FW 危害神经系统,超过 280 mg/kg FW 可致死;
在人类中,马铃薯糖苷生物碱中毒症状主要包括咽喉灼烧、恶心呕吐、腹痛腹泻等症状;大剂量摄入时可损伤神经系统,在严重情况下,已报道出现麻痹、呼吸功能不全、心力衰竭、昏迷和死亡。孕妇、儿童、老人风险更高。
这些不良反应可能是由于其能够与细胞膜上3β-羟基甾醇结合,从而导致细胞膜的破坏和完整性丧失。经口暴露后,这些效应可能影响胃肠道黏膜,并引起中毒人类观察到的症状,如恶心、呕吐和腹泻。还有一种可能是α-茄新碱和α-马铃薯新碱通过可逆的竞争性作用模式抑制神经递质的传递,通过抑制乙酰胆碱酯酶和血清丁酰胆碱酯酶后,导致神经元和神经肌肉接头处乙酰胆碱的过量积聚,也可能导致GA中毒所描述的症状。
⚠️重要知识点:普通家庭蒸煮、爆炒,几乎无法彻底分解糖苷生物碱,毒素热稳定性极强,高温不能实现完全去毒。吃土豆时有苦味就要注意了,口中苦味或灼热感是可能伴随马铃薯糖苷生物碱中毒症状的感官印象。
很多人会把 “变绿” 和 “发芽” 画等号,其实也不无道理,但二者并不完全绑定。马铃薯果皮中龙葵碱的增加与果皮变绿(叶绿素合成)密切相关,虽然这些生化过程彼此独立,但都会被光照激活。
|
叶绿素(变绿)≠毒素,但光照是诱导毒素大量合成的最强驱动因素。
|
• 见光发芽:光照同时启动叶绿素合成 + 糖苷生物碱大量积累,土豆表皮发绿,毒素快速飙升,风险极高。
• 完全避光地窖发芽:长期黑暗储存,土豆依旧可以萌发长出很长白色芽条,但毒素上升幅度远低于光照条件下的发芽,只是依旧会缓慢升高,并非完全不产生毒素。
地窖土豆长白芽、不变绿,不代表无毒,只是毒素涨幅被环境抑制。
二、为什么地窖储存长芽土豆,有人吃了 “没事”
1. 储存环境:低温完全避光,抑制毒素爆发式增长
西北、云南农家土窖温度大多维持 4‑8℃,黑暗通风。
研究证实:同等储存时间,避光条件下土豆的糖苷生物碱含量,仅为光照组 14%‑26%,光照才是毒素暴涨的核心开关。而蓝光和白光照射下土豆糖苷生物碱含量积累远超避光条件下的生成。
土豆表皮皱巴巴,仅仅是薯块长期失水,失水皱缩不等于毒素超标,但长时间储存伴随发芽,毒素依然会缓慢累积。
2. 地方老品种与商业品种的基因型差异
农家自留的地方老品种(地方农家种)和市面上商业化鲜食土豆(如荷兰土豆等),毒素本底以及胁迫后的上升幅度差异明显。
部分高原老品种在避光发芽条件下,糖苷生物碱升高幅度相对温和;而很多现代商业品种对光照、发芽胁迫更敏感,微小刺激就可能导致毒素快速上升。
但无论什么品种,芽体、芽眼周围果肉的毒素浓度都是全薯最高的,芽条必须彻底去除,芽眼需要深挖。此外,机械损伤、虫蛀、表皮变绿、发芽或局部霉烂,都会使龙葵素含量增加。
3. 传统处理方式降低暴露剂量
当地传统处理流程:全部掰除长芽条,深挖芽眼周边 1‑2 cm 果肉,厚削表皮;切块清水浸泡;长时间充分炖煮,部分会加醋烹饪;一旦吃到苦味直接丢弃。
苦味就是糖苷生物碱超标的味觉信号,通过去除高毒部位,降低摄入的毒素总量,降低急性中毒概率。
4. 幸存者偏差:“没出事”≠安全
多数情况只是摄入剂量没有达到急性中毒阈值。轻微肠胃不适,常常被当成普通 “吃坏肚子”,并不会归因于土豆,也很少就医记录。
不代表这种吃法值得模仿,老人、孩子、孕妇依旧要尽量避开发芽土豆。
三、家庭食用红线
对于已经发芽土豆,尽量不建议食用。
❌必须整颗直接扔掉,无论老品种还是地窖土豆
1. 芽多、芽条很长;
2. 表皮、薯肉出现变绿;
3. 变软、腐烂、黑斑;
4. 切开有明显苦味。
|
重点提醒:地窖避光长出大白芽,哪怕不变绿,只要芽很长,毒素已经向周边薯肉扩散,家庭条件很难精准检测毒素含量,风险不可控,优先建议丢弃。
|
四、土豆正确储存方法
土豆应当存放于阴凉、避光、通风位置,不要冰箱冷藏;冰箱低温会促使土豆内部淀粉转化为还原糖,烹饪时产生丙烯酰胺。光照是最大敌人,一定要避开窗台、台面有光的地方。
切记:
1. 变绿是光照标记,光照才是糖苷生物碱爆发的首要诱因;黑暗地窖可以长很长白芽而不变绿,但毒素依旧会升高,只是涨幅被抑制,不等于无毒。
2. 农家吃地窖长芽土豆,是环境、品种、处理方式共同作用,再叠加幸存者偏差,属于传统经验,不能作为家庭食用标准。
3. 糖苷生物碱耐热,蒸煮不能彻底解毒;苦味是危险信号,尝到苦味务必吐掉丢弃。
4. 老人、儿童、孕妇,尽量完全避开任何发芽土豆。
写到这里,又想起电影里的那个念想 —— 好好吃饭。
马俊生用一盘发芽土豆,赌的是孩子们能多活一天;屏幕外,我们反复纠结 "这颗土豆到底能不能吃",说到底,也不过是想让一家人吃得安心。祖辈在土窖里存土豆,存的是过日子的一口气;今天我们把龙葵素、芽眼和绿皮研究个明白,守的其实也是同一件小事 —— 好好吃饭。
愿每张饭桌上,都有热乎、安心的饭菜。也愿我们记得:好好吃饭,就是最平常,也最珍贵的愿景。
参考文献
[1] EFSA Panel on Contaminants in the Food Chain (CONTAM), Schrenk D, Bignami M, et al. Risk assessment of glycoalkaloids in feed and food, in particular in potatoes and potato-derived products. EFSA J. 2020;18(8):e06222. Published 2020 Aug 11. doi:10.2903/j.efsa.2020.6222
[2] Sa G, Zao X, Yuan J, Cheng L, Yu B. Light-Quality-Dependent Greening and Steroidal Glycoalkaloid Accumulation in Potato Tubers: Regulatory Mechanisms and Postharvest Strategies to Reduce Food Safety Risks. Foods. 2025;14(19):3394. Published 2025 Sep 30. doi:10.3390/foods14193394
[3] 黄红苹,郭华春,王琼,等.云南马铃薯品种(系)块茎中的龙葵素含量测定[J].中国农业科学,2011,44(7):1512-1518.


''标签解析异常!
引发类型为“System.OutOfMemoryException”的异常。
在 System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding)
在 System.Text.UnicodeEncoding.GetString(Byte[] bytes, Int32 index, Int32 count)
在 System.Data.SqlClient.TdsParserStateObject.TryReadString(Int32 length, String& value)
在 System.Data.SqlClient.TdsParser.TryReadSqlStringValue(SqlBuffer value, Byte type, Int32 length, Encoding encoding, Boolean isPlp, TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.TryReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj, SqlCommandColumnEncryptionSetting columnEncryptionOverride, String columnName)
在 System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly)
在 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn)
在 System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
在 Whir.Repository.Database.Query(String sql, Object[] args)
在 Whir.Label.Dynamic.Content.GetColumnFileValue() 位置 E:\chenxz\05.ezEIP\ezEipV5.0\tags\V5.3.0(0649) 奇奇版\Whir.Label\Dynamic\Content.cs:行号 111
在 Whir.Label.Dynamic.Content.Render(HtmlTextWriter output) 位置 E:\chenxz\05.ezEIP\ezEipV5.0\tags\V5.3.0(0649) 奇奇版\Whir.Label\Dynamic\Content.cs:行号 93
''标签解析异常!
引发类型为“System.OutOfMemoryException”的异常。
在 System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding)
在 System.Text.UnicodeEncoding.GetString(Byte[] bytes, Int32 index, Int32 count)
在 System.Data.SqlClient.TdsParserStateObject.TryReadString(Int32 length, String& value)
在 System.Data.SqlClient.TdsParser.TryReadSqlStringValue(SqlBuffer value, Byte type, Int32 length, Encoding encoding, Boolean isPlp, TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.TryReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj, SqlCommandColumnEncryptionSetting columnEncryptionOverride, String columnName)
在 System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly)
在 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn)
在 System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
在 Whir.Repository.Database.Query(String sql, Object[] args)
在 Whir.Label.Dynamic.Content.GetColumnFileValue() 位置 E:\chenxz\05.ezEIP\ezEipV5.0\tags\V5.3.0(0649) 奇奇版\Whir.Label\Dynamic\Content.cs:行号 111
在 Whir.Label.Dynamic.Content.Render(HtmlTextWriter output) 位置 E:\chenxz\05.ezEIP\ezEipV5.0\tags\V5.3.0(0649) 奇奇版\Whir.Label\Dynamic\Content.cs:行号 93