Unless this is a learning exercise about sed, I'd use a language with a proper CSV parser, for example:
ruby -rcsv -ne '
puts CSV.generate_line(CSV.parse_line($_), {:col_sep => "|"})
' filename
outputs
A|B|C,D|E|F,G|H|I,J,K
Chang, Yao-Jen|33|MIS|Taiwan, Taipei|M
The quotes have vanished. That's because there are no "interior" separators that require quoting. If some pipes appear in the input, then you'll see some fields double quoted in the output.