Air Canada spokesman Peter Fitzpatrick said police boarded Flight 851 in Edmonton on Monday afternoon and removed a male passenger.
Mounties said a drunk man allegedly assaulted a female crew member and another passenger, and did some minor damage to the Boeing 777.
"There was an escalation of events where he was belligerent to the staff and not obeying crew orders," said RCMP Staff Sgt. Shawn Lemay.
"When your behaviour is such that it forces an aircraft to make an unscheduled stop, it's certainly quite serious."
There were 349 passengers and 11 crew on board.
Staff restrained the man with plastic zip ties and duct tape before the plane landed in Edmonton, Lemay said.
Cpl. Mark Dudley, an officer stationed at the Edmonton airport, said it wouldn't have taken much longer for the plane to arrive in Calgary, but safety was an issue for the pilot.
"They wanted to get the plane down and deal with it as quickly as possible."
Justin Frank, 35, of Calgary is facing several charges. He is in custody and is scheduled to appear Thursday in provincial court in Leduc, Alta.