You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alpine 3.20镜像中使用iconv-go库的TRANSLIT选项报错问题排查

Alpine 3.20镜像中使用iconv-go库的TRANSLIT选项报错问题排查

我在Alpine 3.20镜像里用iconv-go库的TRANSLIT选项时碰到了问题,折腾半天没搞定,来求助大家!

下面是能重现问题的完整代码和配置:

main.go

package main

import (
    "fmt"

    iconv "github.com/djimenez/iconv-go"
)

func main() {
    output := make([]byte, 20)
    nRead, nWrite, err := iconv.Convert([]byte("éé"), output, "UTF-8", "ASCII//TRANSLIT")
    fmt.Println(nRead, nWrite, err)
}

go.mod

module truc

go 1.22.4

require github.com/djimenez/iconv-go v0.0.0-20160305225143-8960e66bd3da // indirect

Dockerfile

FROM golang:1.22-alpine3.20 as builder
RUN apk --no-cache add build-base gnu-libiconv-libs
WORKDIR /src
# 先复制go mod文件,利用缓存减少重复下载依赖的时间
COPY ./go.* ./
RUN  go mod download
COPY . .
RUN  go build  -o "test-iconv" .

FROM alpine:3.20  as runtime
RUN apk --no-cache add gnu-libiconv-libs
COPY --from=builder /src/test-iconv /app/
RUN adduser connector --disabled-password && chown connector. -R /app && chmod 700 "/app/test-iconv"
USER connector  
ENTRYPOINT ["/app/test-iconv"] 

运行命令

docker build . -t test-iconv && docker run test-iconv

我本来预期的输出应该是:

4 2 nil

但实际运行后得到的却是:

0 0 invalid argument

有意思的是,如果把构建和运行的镜像换成基于Ubuntu的golang:1.22,这个问题就完全消失了,可镜像体积直接从18MB涨到了800MB,实在太臃肿了,还是想用Alpine的轻量镜像。

有没有大佬知道我在Alpine的配置里漏掉了什么?麻烦指点一下,谢谢啦!

备注:内容来源于stack exchange,提问作者Lindmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:09:53